- PVSM.RU - https://www.pvsm.ru -
Свежая подборка со ссылками на новости и материалы. В выпуске: 2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое.
Приятного чтения!
PHPDIGEST2020
.3,14
будет 3.14
, подробнее в канале [11].str_starts_with()
и str_ends_with()
.guard
для реализации, по сути, инвертированного if
. Такая концепция есть в Swift [17], но из-за статической типизации там в ней больше смысла. Предложение отозвано автором.return if ($condition);
для раннего выхода из функций
function divide($dividend, $divisor = null) {
return if ($divisor === null || $divisor === 0);
// or
return 0 if ($divisor === null || $divisor === 0);
return $dividend / $divisor;
}
Похожий синтаксис широко используется в Ruby [19], но насколько это лучше if (condition) return;
?
htmlspecialchars($string, double_encode: false);
// вместо
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401 , ini_get("default_charset"), false);
Подробнее в канале [21].
trigger_error()
.
<?php
<<Deprecated("use test2() instead")>>
function test() {}
class Foo {
<<Deprecated>>
public function test() {}
public function test2(<<Deprecated>> $value) {}
<<Deprecated>>
public $value;
<<Deprecated>>
const FOO = 1;
}
sort, rsort, usort, asort, arsort, uasort, ksort, krsort, uksort, array_multisort
стабильными. Правда, при большом количестве одинаковых элементов такой фикс отразится на производительности (бенчмарк [27]).opcache.optimization_level=0
) — это может быть полезно для CLI-скриптов, когда запуск оптимизаций дольше, чем выполнение неоптимизированного кода.
А вот выполнить оптимизации без кеширования нельзя, что и предлагается реализовать. Такая возможность может быть полезна, когда запускается много долгоживущих скриптов и в условиях ограниченной памяти.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [76].
Вопросы и предложения пишите на почту [77] или в твиттер [78].
Больше новостей и комментариев в Telegram-канале PHP Digest [79].
Прислать ссылку [80]
Поиск ссылок по всем дайджестам [81]
← Предыдущий выпуск: PHP-Дайджест № 179 [82]
Автор: Роман Пронский
Источник [83]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/353138
Ссылки в тексте:
[1] PHP 7.4.6: https://www.php.net/ChangeLog-7.php#7.4.6
[2] PHP 7.3.18: https://www.php.net/ChangeLog-7.php#7.3.18
[3] PHP 7.2.31: https://www.php.net/ChangeLog-7.php#7.2.31
[4] Fwdays PHP online meetup: https://fwdays.com/en/event/php-online-meetup
[5] PHP fwdays'20 online: https://fwdays.com/en/event/php-fwdays-2020
[6] программа: https://fwdays.com/en/event/php-fwdays-2020#program-event
[7] 3-й виртуальный PHP-митап: https://meetups-online.ru/php-may-2020
[8] Sara Golemon: https://github.com/sgolemon
[9] Gabriel Caruso: https://twitter.com/carusogabriel
[10] [RFC] Locale-independent float to string cast: https://wiki.php.net/rfc/locale_independent_float_to_string
[11] в канале: https://t.me/phpdigest/144
[12] [RFC] Add str_starts_with() and str_ends_with() functions: https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions
[13] str_contains(): https://wiki.php.net/rfc/str_contains
[14] [RFC] Match expression: https://wiki.php.net/rfc/match_expression
[15] автор считает: https://externals.io/message/110098#110098
[16] [RFC] Guard statement: https://wiki.php.net/rfc/guard_statement
[17] есть в Swift: https://www.hackingwithswift.com/new-syntax-swift-2-guard
[18] [RFC] Conditional Return, Break, and Continue Statements: https://wiki.php.net/rfc/conditional_break_continue_return
[19] используется в Ruby: https://github.com/rubocop-hq/ruby-style-guide#no-nested-conditionals
[20] [RFC] Named Arguments: https://wiki.php.net/rfc/named_params
[21] в канале: https://t.me/phpdigest/143
[22] [RFC] <<Deprecated>> Attribute: https://wiki.php.net/rfc/deprecated_attribute
[23] [RFC] Add CMS Support: https://wiki.php.net/rfc/add-cms-support
[24] RFC-5652: https://www.rfc-editor.org/rfc/rfc5652.html
[25] [RFC] Make sorting stable: https://wiki.php.net/rfc/stable_sorting
[26] (пример: https://3v4l.org/bpvq1
[27] (бенчмарк: https://gist.github.com/nikic/5d44cb5d0d7c1f414f455090a0193567
[28] [RFC] Opcache optimization without any caching: https://wiki.php.net/rfc/opcache.no_cache
[29] kornrunner/php-blurhash: https://github.com/kornrunner/php-blurhash
[30] Blurhash: https://blurha.sh/
[31] gotzmann/comet: https://github.com/gotzmann/comet
[32] PHP-фреймворк для быстрых REST API: https://habr.com/ru/post/501722/
[33] https://github.com/nikic/iter: https://github.com/nikic/iter
[34] @dmitrybalabka: https://twitter.com/dmitrybalabka
[35] morris/lessql: https://github.com/morris/lessql
[36] spiral/app-keeper: https://github.com/spiral/app-keeper
[37] theiconic/php-ga-measurement-protocol: https://github.com/theiconic/php-ga-measurement-protocol
[38] pascalbaljetmedia/laravel-analytics-event-tracking: https://github.com/pascalbaljetmedia/laravel-analytics-event-tracking
[39] vantoozz/proxy-scraper: https://github.com/vantoozz/proxy-scraper
[40] vantoozz: https://habr.com/ru/users/vantoozz/
[41] zenstruck/schedule-bundle: https://github.com/zenstruck/schedule-bundle
[42] fre5h/CentrifugoBundle: https://github.com/fre5h/CentrifugoBundle
[43] Часть 6. Тестирование: https://habr.com/ru/post/500044/
[44] Часть 7. Релизный цикл, установка и обновление: https://habr.com/ru/post/500596/
[45] Неделя Symfony #698 (11-17 мая 2020): https://symfony.com/blog/a-week-of-symfony-698-11-17-may-2020
[46] laravel-frontend-presets/tall: https://github.com/laravel-frontend-presets/tall/
[47] Перевод описания: https://laravel.demiart.ru/tall-stack/
[48] Laravel 7: https://habr.com/ru/post/502058/
[49] О паттерне «Бекенд-для-фронта» для создания монолитов: https://www.youtube.com/watch?v=zazeGmFmUxg
[50] majestic monolith: https://m.signalvnoise.com/the-majestic-monolith/
[51] Мультисайт (multi-tenancy) на Laravel без дополнительных пакетов: https://divinglaravel.com/multi-tenancy-in-laravel
[52] Как применить TDD для команд artisan: https://laracasts.com/series/guest-spotlight/episodes/12
[53] DriftPHP: Быстрый старт: https://sergeyzhuk.me/2020/05/08/driftphp-quick-start/
[54] paphper/paper: https://github.com/paphper/paper
[55] Интервью с Сергеем Жуком: https://habr.com/ru/post/501396/
[56] PHP 8 в восьми кусочках кода: https://stitcher.io/blog/php-8-in-8-code-blocks
[57] Новое в PHP 8: https://stitcher.io/blog/new-in-php-8
[58] Атрибуты в PHP 8: https://stitcher.io/blog/attributes-in-php-8
[59] В защиту фреймворков для моков: https://davedevelopment.co.uk/2020/05/14/in-defence-of-mocking-frameworks.html
[60] о тестировании без мокинговых фреймворков: https://blog.frankdejonge.nl/testing-without-mocking-frameworks/
[61] Ваше приложение является менеджером пакетов: https://tighten.co/blog/your-app-is-a-package-manager/
[62] Быстрое переключение между PCOV и Xdebug: https://localheinz.com/blog/2020/05/16/quickly-switching-between-pcov-and-xdebug/
[63] Better web sapi: https://github.com/Danack/RfcCodex/blob/master/better_web_sapi.md
[64] Matthias Noback: DDD и база данных: https://matthiasnoback.nl/2020/05/ddd-and-your-database/
[65] История одного проекта или как я 7 лет создавал АТС на базе Asterisk и PHP: https://habr.com/ru/post/501980/
[66] Проклятая старая CRM: https://habr.com/ru/company/skyeng/blog/501508/
[67] Пятиминутка PHP № 78: https://5minphp.ru/episode78/
[68] «Архитектура сложных веб-приложений. С примерами на Laravel»: https://github.com/adelf/acwa_book_ru
[69] Между скобок №7: https://soundcloud.com/between-braces/7-yuliya-nikolaeva-modulnyy-php-monolit
[70] оригинальный на английском: https://www.youtube.com/watch?v=cQZBS3u3SeU
[71] с переводом на русский: https://www.youtube.com/watch?v=zYWDlaOOFTU
[72] PHP Internals News podcast #52: https://phpinternals.news/52
[73] George Banyard: https://twitter.com/Girgias
[74] PHP Internals News #53: https://phpinternals.news/53
[75] ходу голосования: https://wiki.php.net/rfc/constructor_promotion#vote
[76] личку: https://habrahabr.ru/conversations/pronskiy/
[77] почту: mailto:roman@pronskiy.com
[78] твиттер: https://twitter.com/pronskiy
[79] PHP Digest: https://t.me/phpdigest
[80] Прислать ссылку: https://bit.ly/php-digest-add-link
[81] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[82] Предыдущий выпуск: PHP-Дайджест № 179: https://habr.com/ru/post/500314/
[83] Источник: https://habr.com/ru/post/502442/?utm_source=habrahabr&utm_medium=rss&utm_campaign=502442
Нажмите здесь для печати.