- PVSM.RU - https://www.pvsm.ru -

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP, Codeception 3.0 и другие релизы, короткие лямбды в PHP 7.4 и обзор свежих RFC-предложений из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!
fn() => и автоматическим захватом переменных из внешнего скоупа по значению:
$y = 1;
$fn = fn($x) => $x + $y;
Пока функции могут иметь только одно выражение строго, результат которого и будет возвращён. Многострочные функции, возможно, будут реализованы позже. Хак с использованием оператора && как в JS не сработает:
andOperator = ($x) => ($y = 10) && $x + $y;
console.log(andOperator(5)); // 15
$andOperator = fn($x) => ($y = 10) && $x + $y;
var_dump($andOperator(5)); // bool(true)
Но можно применить хак с использованием end():
<?php
function last(...$args) {
return end($args);
}
$multipleLines = fn($x) => last(
$y = $x * 10, // 10
$z = $y + 15, // 25
$x + $y + $z // 1 + 10 + 25 результат этого выражения возвращается из last()
);
var_dump($multipleLines(1)); // int(36)
<?, однако оно было встречено бурей возмущений и споров. Поэтому был предложен гораздо более мягкий путь [10], в котором в ближайших версиях возможность остаётся доступной как есть, и будет бросаться depecation warning.... теперь будет доступен в массивах.
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
Также с помощью него можно быстро преобразовать итератор в массив вместо использования iterator_to_array:
$array = [...$iter];
__toString(). Ещё одно приятное и совсем не тривиальное улучшение для PHP 7.4, которое избавит от необходимости использовать всякие обходные пути 1 [14], 2 [15].
Как устроен Eloquent [30] — Laravel Core Adventures
Начинаем работать с event sourcing в Laravel [31] — используя spatie/laravel-event-projector [32].
К команде Yii присоединился Mehdi Achour [36]
Обзор Yii3 [37]
Асинхронный PHP. Зачем? [40]
5 способов деплоя PHP-кода в условиях хайлоада [47]
Статистика и мониторинг PHP скриптов в реальном времени. [48] ClickHouse и Grafana идут на помощь к Pinba.
Ломаем паттерн проектирования Singleton в PHP [49]
Стрим [50] по обновлению spatie/period [51] — подглядывать в чужой монитор довольно познавательно.Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [53].
Вопросы и предложения пишите на почту [54] или в твиттер [55].
Больше новостей и комментариев в Telegram-канале PHP Digest [56].
Прислать ссылку [57]
Поиск ссылок по всем дайджестам [58]
← Предыдущий выпуск: PHP-Дайджест № 154 [59]
Автор: Роман Пронский
Источник [60]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/316656
Ссылки в тексте:
[1] PHP 7.3.5: https://www.php.net/ChangeLog-7.php#7.3.5
[2] PHP 7.2.18: https://www.php.net/ChangeLog-7.php#7.2.18
[3] PHP 7.1.29: https://www.php.net/ChangeLog-7.php#7.1.29
[4] Codeception 3.0: https://codeception.com/04-24-2019/codeception-3.0
[5] spiral/roadrunner 1.4.0: https://github.com/spiral/roadrunner/releases/tag/v1.4.0
[6] roadrunner.dev: https://roadrunner.dev/
[7] PHP Russia 2019: http://phprussia.ru/2019
[8] [RFC] Arrow Functions 2.0: https://wiki.php.net/rfc/arrow_functions_v2#vote
[9] [RFC] Deprecate PHP Short open tags: https://wiki.php.net/rfc/deprecate_php_short_tags
[10] более мягкий путь: http://news.php.net/php.internals/105431
[11] [RFC] Spread Operator in Array Expression: https://wiki.php.net/rfc/spread_operator_for_array
[12] RFC: Allow throwing exceptions from __toString(): https://wiki.php.net/rfc/tostring_exceptions
[13] «грусти PHP»: http://phpsadness.com/
[14] 1: https://github.com/symfony/symfony/blob/1c110fa1f7e3e9f5daba73ad52d9f7e843a7b3ff/src/Symfony/Component/Debug/ErrorHandler.php#L457-L489
[15] 2: https://github.com/yiisoft/yii2/blob/master/framework/base/ErrorHandler.php#L216
[16] PHP Internals News #7: https://phpinternals.news/7
[17] PHP Internals News #8: https://phpinternals.news/8
[18] kalessil/production-dependencies-guard: https://github.com/kalessil/production-dependencies-guard
[19] jakoch/awesome-composer: https://github.com/jakoch/awesome-composer
[20] twirphp/twirp: https://github.com/twirphp/twirp
[21] Twirp: https://twitchtv.github.io/twirp/
[22] Пост: https://medium.com/@mark.sagikazar/twirphp-a-modern-rpc-framework-for-php-d54e32f9911f
[23] EFTEC/BladeOne: https://github.com/EFTEC/BladeOne
[24] fe3dback/str: https://github.com/fe3dback/str
[25] saa-nl/zymfony-bundle: https://github.com/saa-nl/zymfony-bundle
[26] Неделя Symfony #643 (22-28 апреля 2019): https://symfony.com/blog/a-week-of-symfony-643-22-28-april-2019
[27] Неделя Symfony #644 (29 апреля — 5 мая 2019): https://symfony.com/blog/a-week-of-symfony-644-29-april-5-may-2019
[28] VanOns/laraberg: https://github.com/VanOns/laraberg
[29] aimeos/aimeos-laravel: https://github.com/aimeos/aimeos-laravel
[30] Как устроен Eloquent: https://laravelcoreadventures.com/the-lost-eloquent-temple-of-doom/level/1
[31] Начинаем работать с event sourcing в Laravel: https://murze.be/video-getting-started-with-event-sourcing-in-laravel
[32] spatie/laravel-event-projector: https://github.com/spatie/laravel-event-projector
[33] Laravel Snippet #12: https://blog.laravel.com/laravel-snippet-12
[34] Insolita/yii2-codestat: https://github.com/Insolita/yii2-codestat
[35] omnilight/yii2-scheduling: https://github.com/omnilight/yii2-scheduling
[36] К команде Yii присоединился Mehdi Achour: https://yiiframework.ru/news/236/k-komande-prisoedinilsa-mehdi-achour
[37] Обзор Yii3: http://unetway.com/blog/yii3-framework-review/
[38] Базовая HTTP аутентификация: https://sergeyzhuk.me/2019/04/20/restful-api-with-reactphp-basic-auth/
[39] аутентификация с помощью JWT: https://sergeyzhuk.me/2019/04/22/restful-api-with-reactphp-jwt-auth/
[40] Асинхронный PHP. Зачем?: https://habr.com/ru/company/skyeng/blog/448968/
[41] Компилятор PHP, также известный как кроличья нора FFI: https://blog.ircmaxell.com/2019/04/compilers-ffi.html
[42] Как мы мигрировали 54357 строк кода с Nette на Symfony: https://pehapkari.cz/blog/2019/04/20/how-we-migrated-54-357-lines-of-code-nette-to-symfony-in-2-people-under-80-hours/
[43] Запускаем PHPUnit тесты из PhpStorm: https://localheinz.com/blog/2019/04/27/running-tests-for-phpunit-itself-from-within-phpstorm/
[44] Серия статей о PSR-14: https://steemit.com/php/@crell/psr-14-a-major-event-in-php
[45] отложенных: https://steemit.com/php/@crell/psr-14-example-delayed-events-queues-and-asynchronicity
[46] azdanov/php-interview-exercises: https://github.com/azdanov/php-interview-exercises
[47] 5 способов деплоя PHP-кода в условиях хайлоада: https://habr.com/ru/company/oleg-bunin/blog/449916/
[48] Статистика и мониторинг PHP скриптов в реальном времени.: https://habr.com/ru/post/444610/
[49] Ломаем паттерн проектирования Singleton в PHP: https://habr.com/ru/post/450554/
[50] Стрим: https://www.twitch.tv/videos/418059035
[51] spatie/period: https://github.com/spatie/period
[52] SDCast #103: в гостях Никита Попов: https://sdcast.ksdaemon.ru/2019/04/sdcast-103/
[53] личку: https://habrahabr.ru/conversations/pronskiy/
[54] почту: mailto:roman@pronskiy.com
[55] твиттер: https://twitter.com/pronskiy
[56] PHP Digest: https://t.me/phpdigest
[57] Прислать ссылку: https://bit.ly/php-digest-add-link
[58] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[59] Предыдущий выпуск: PHP-Дайджест № 154: https://habr.com/ru/post/448880/
[60] Источник: https://habr.com/ru/post/450642/?utm_source=habrahabr&utm_medium=rss&utm_campaign=450642
Нажмите здесь для печати.