- PVSM.RU - https://www.pvsm.ru -
Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
Приятного чтения!
composer fund
, которая показывает информацию о спонсорстве для ваших зависимостей.str_contains()
будет проверять, содержится ли строка в другой строке.throw
– это оператор, а не выражение. Предлагается сделать его выражением и тогда возможно будет использование в коротких лямбдах, в тернарных операторах и других конструкциях:
$callable = fn() => throw new Exception();
$value = $nullableValue ?? throw new InvalidArgumentException();
$value = $falsableValue ?: throw new InvalidArgumentException();
$value = !empty($array)
? reset($array)
: throw new InvalidArgumentException();
doTheFoo((new Foo)->[
a = 1,
b = 2,
c = 3,
]);
// Эквивалентно:
$myObj = new Foo();
$myObj->a = 1;
$myObj->b = 2;
$myObj->c = 3;
doTheFoo($myObj);
is_literal()
, чтобы разработчики/фреймворки могли быть уверены, что они работают с безопасным значением, то есть созданным из одного или нескольких литералов, опредёленных в PHP, а не сформированных динамически из пользовательского ввода.
define('TABLE', 'example');
$sql = 'SELECT * FROM ' . TABLE . ' WHERE id = ?';
is_literal($sql); // Returns true
$sql .= ' AND id = ' . mysqli_real_escape_string($db, $_GET['id']);
is_literal($sql); // Returns false
К предложению много вопросов, и реализация нетривиальная. Похоже, шансов мало.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [61].
Вопросы и предложения пишите на почту [62] или в твиттер [63].
Больше новостей и комментариев в Telegram-канале PHP Digest [64].
Прислать ссылку [65]
Поиск ссылок по всем дайджестам [66]
← Предыдущий выпуск: PHP-Дайджест № 175 [67]
Автор: Роман Пронский
Источник [68]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/350487
Ссылки в тексте:
[1] PHP 7.4.4: https://www.php.net/ChangeLog-7.php#7.4.4
[2] PHP 7.3.16: https://www.php.net/ChangeLog-7.php#7.3.16
[3] PHP 7.2.29: https://www.php.net/ChangeLog-7.php#7.2.29
[4] Composer 1.10.0: https://github.com/composer/composer/releases/tag/1.10.0
[5] PHP Russia: https://rmcreative.ru/blog/post/php-russia-online-i-perenos-php-russia
[6] Митапы PHP-сообществ в марте, которые переходят в онлайн или переносятся: https://habr.com/ru/company/skyeng/blog/492038/
[7] Laracon EU Madrid: https://laracon.eu/2020/tickets
[8] Midwest PHP: https://midwestphp.org/stream
[9] [RFC] str_contains: https://wiki.php.net/rfc/str_contains
[10] принято: https://t.me/phpdigest/127
[11] [RFC] throw expression: https://wiki.php.net/rfc/throw_expression
[12] [RFC] Compact Object Property Assignment: https://wiki.php.net/rfc/compact-object-property-assignment
[13] [RFC] Object Initializer: https://wiki.php.net/rfc/object-initializer
[14] [RFC] Is Literal Check: https://wiki.php.net/rfc/is_literal
[15] [RFC] Write-Once Properties: https://wiki.php.net/rfc/write_once_properties
[16] репозиторий: https://github.com/Danack/RfcCodex
[17] о пропуске дефолтных значений: https://github.com/Danack/RfcCodex/blob/master/explicit_defaults.md
[18] автор: https://twitter.com/MrDanack
[19] Understanding RFC attitudes: https://github.com/Danack/RfcCodex/blob/master/rfc_attitudes.md
[20] async-aws/aws: https://github.com/async-aws/aws
[21] lisachenko/z-engine: https://github.com/lisachenko/z-engine
[22] NightTiger: https://habr.com/ru/users/nighttiger/
[23] пример создания расширения: https://github.com/lisachenko/z-engine/#creating-php-extensions-in-runtime
[24] Badcow/DNS: https://github.com/Badcow/DNS
[25] yswery/PHP-DNS-SERVER: https://github.com/yswery/PHP-DNS-SERVER
[26] nikolaposa/rate-limit: https://github.com/nikolaposa/rate-limit
[27] Spartaques/phpkafkacore: https://github.com/Spartaques/phpkafkacore
[28] Новое в Symfony 5.1: https://symfony.com/blog/category/living-on-the-edge
[29] автовнедрения зависимостей: https://symfony.com/blog/new-in-symfony-5-1-autowire-public-typed-properties
[30] symfony/uid: https://github.com/symfony/uid
[31] Неделя Symfony #689 (16-22 марта 2020): https://symfony.com/blog/a-week-of-symfony-690-16-22-march-2020
[32] Laravel 7.1.2: https://blog.laravel.com/security-laravel-712-released
[33] Airlock переименован в Sanctum: https://blog.laravel.com/airlock-renamed-to-sanctum
[34] grosv/eloquent-sheets: https://github.com/grosv/eloquent-sheets
[35] Принцип DRY на примере Laravel: https://habr.com/ru/post/491728/
[36] Продвинутые советы по Маршрутизации в Laravel: https://laravel.demiart.ru/routing-advanced-tips/
[37] Серия видеороликов: https://divinglaravel.com/explaining-laravel-queue-configuration-keys
[38] reactphp/socket 1.4.0: https://github.com/reactphp/socket
[39] добавлена поддержка IPv6: https://clue.engineering/2020/introducing-ipv6-for-reactphp
[40] Продолжение бесед Сергея Жука с Marc Morera: https://www.youtube.com/watch?v=2F4Yw2J0p8E
[41] DriftPHP: https://github.com/driftphp
[42] PHP reimagined: https://stitcher.io/blog/php-reimagined
[43] Event driven server in PHP: https://stitcher.io/blog/event-driven-php
[44] О графе потока управления в PHP: https://www.silverf0x00.com/getting-started-with-php-cfg/
[45] ircmaxell/php-cfg: https://github.com/ircmaxell/php-cfg
[46] Об этикете Composer пакетов: https://sebastiandedeyne.com/composer-semver-and-underlying-dependency-changes/
[47] инструкция по созданию окружения на базе Docker: https://guille.cloud/build-a-docker-development-environment-for-php-projects/index.html
[48] Как научить Codeception прыгать к определениям методов хелперов и модулей: https://medium.com/@ivastly/how-to-teach-phpstorm-to-go-to-implemenation-of-codeception-modules-and-helpers-6acb81d41348
[49] catanfa: https://habr.com/ru/users/catanfa/
[50] Сравнение и бенчмарки JSON и MessagePack: https://thephp.website/en/issue/messagepack-vs-json-benchmark/
[51] NoVerify: PHP-линтер, который работает быстро: https://habr.com/ru/company/oleg-bunin/blog/487260/
[52] Обработка миллионов событий в сутки при помощи каскадов очередей: https://habr.com/ru/company/manychat/blog/492964/
[53] Между скобок: https://soundcloud.com/between-braces
[54] первом эпизоде: https://soundcloud.com/between-braces/1-dmitriy-kosov-o-pereezde-legasi-prilozheniya-s-zend-na-symfony
[55] Онлайн-митап про PHP и удалёнку: https://www.youtube.com/watch?v=WwINpXxxWMU
[56] Видеозаписи с BeerPHP SPb Meetup: https://www.youtube.com/channel/UC7HeLRn5kBpu1o-MiAcvCyw/videos
[57] PHP Internals News #44: https://phpinternals.news/44
[58] Máté Kocsis: https://twitter.com/kocsismate90
[59] PHP Internals News #45: https://phpinternals.news/45
[60] дальнейшем развитии PHP: https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
[61] личку: https://habrahabr.ru/conversations/pronskiy/
[62] почту: mailto:roman@pronskiy.com
[63] твиттер: https://twitter.com/pronskiy
[64] PHP Digest: https://t.me/phpdigest
[65] Прислать ссылку: https://bit.ly/php-digest-add-link
[66] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[67] Предыдущий выпуск: PHP-Дайджест № 175: https://habr.com/ru/post/491660/
[68] Источник: https://habr.com/ru/post/493594/?utm_source=habrahabr&utm_medium=rss&utm_campaign=493594
Нажмите здесь для печати.