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

PHP-Дайджест № 155 (22 апреля – 6 мая 2019)

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP, Codeception 3.0 и другие релизы, короткие лямбды в PHP 7.4 и обзор свежих RFC-предложений из PHP Internals, порция полезных инструментов, и многое другое.

Приятного чтения!

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 2 Новости и релизы

  • PHP 7.3.5 [1]
  • PHP 7.2.18 [2]
  • PHP 7.1.29 [3]
  • Codeception 3.0 [4] — Улучшенная интерактивная консоль, повторное выполнение шагов, поддержка PHPUnit 8 и другое.
  • spiral/roadrunner 1.4.0 [5] — Обновление сервера приложений, балансировщика и менеджера процессов на Go. В релизе безопасная остановка воркеров, поддержка переменных окружения в конфигах, возможность контролировать воркеры в пуле, и другое. Есть новый сайт roadrunner.dev [6].
  • PHP Russia 2019 [7] — 17 мая, Москва, Инфопространство. До последнего повышения цен остается всего несколько дней.

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 3 PHP Internals

  • [RFC] Arrow Functions 2.0 [8] — Предложение прошло голосование и принято. Теперь в PHP будут короткие анонимные функции с использованием синтаксиса 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)
    
    
  • [RFC] Deprecate PHP Short open tags [9] — В предложении рассматривалась идея убрать возможность использования коротких тегов <?, однако оно было встречено бурей возмущений и споров. Поэтому был предложен гораздо более мягкий путь [10], в котором в ближайших версиях возможность остаётся доступной как есть, и будет бросаться depecation warning.
  • [RFC] Spread Operator in Array Expression [11] — Предложение принято практически единогласно. Оператор ... теперь будет доступен в массивах.
    Скрытый текст

    $parts = ['apple', 'pear'];
    $fruits = ['banana', 'orange', ...$parts, 'watermelon'];
    // ['banana', 'orange', 'apple', 'pear', 'watermelon'];
    

    Также с помощью него можно быстро преобразовать итератор в массив вместо использования iterator_to_array:

    $array = [...$iter];
    
  • RFC: Allow throwing exceptions from __toString() [12] — Никита продолжает систематически исправлять «грусти PHP» [13] одну за одной. На этот раз речь идёт о возможности бросать исключение в __toString(). Ещё одно приятное и совсем не тривиальное улучшение для PHP 7.4, которое избавит от необходимости использовать всякие обходные пути 1 [14], 2 [15].
  • audio PHP Internals News #7 [16] — Derick Rethans общается с Зеевом Сураски о JIT в PHP 8 и более ранних попытках реализации.
  • audio PHP Internals News #8 [17] — Беседа с George Banyard, контрибьютором документации PHP, о коротких тегах.

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 6 Инструменты

  • kalessil/production-dependencies-guard [18] — Пакет предотвращает добавление dev-зависимостей, например, тестовых и отладочных инструментов, в секцию require файла composer.json, а также делает несколько других проверок.
  • jakoch/awesome-composer [19] — Подборка ресурсов и инструментов для Composer.
  • twirphp/twirp [20] — Порт RPC-фреймворка Twirp [21] от Twitch на PHP. Пост [22] в поддержку.
  • EFTEC/BladeOne [23] — Независимая от фреймворка версия Blade в одном файле и без зависимостей.
  • fe3dback/str [24] — Объектная обёртка над string с массой методов для манипуляций и поддержкой многобайтовых строк.

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 7 Symfony

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 9 Laravel

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 13 Yii

Async PHP

PHP-Дайджест № 155 (22 апреля – 6 мая 2019) - 17 Материалы для обучения

Спасибо за внимание!

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [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