PHP-Дайджест № 179 (21 апреля – 4 мая 2020)

0-ykzcjy5-ahoqpvdgjwpnwue-4.jpeg

Свежая подборка со ссылками на новости и материалы. В выпуске: 4 принятых RFC предложения для PHP 8, включая атрибуты (аннотации / декораторы), порция полезных инструментов, онлайн-конференции и митапы, видео, подкасты и многое другое.

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


f574e9991c42407b8fa789a66b854f8d.png Новости и релизы


  • PHP Russia Online, 13 мая — Конференция будет бесплатной благодаря Badoo. В программе запланировано 7 докладов от Chris Holland, Tobias Nyholm, Anna Filina, Markus Winand, Andreas Heigl, Антона Титова и Nicolas Grekas. Для всех докладов будет доступен поток с синхронным переводом на русский от Skyeng.
  • PHP fwdays'20 — Тоже пройдет в онлайн-формате в течение двух дней 30 и 31 мая.
  • Fwdays PHP online meetup — 19 мая 2020, 19:00–21:00 UTC+3, бесплатный онлайн-митап из двух докладов на английском.


c9ee7880391644e4aef6cc28ca681ab0.png PHP Internals


  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Attributes v2 — В PHP 8 будут добавлены полноценные атрибуты (аннотации / декораторы) с синтаксисом угловых скобок << >>.
    Скрытый текст
    <>
    class Foo
    {
        <>
        public const FOO = 'foo';
    
        <>
        public $x;
    
        <>
        public function foo(<> $bar) { }
    }
    
    $object = new <> class () { };
    
    <>
    function f1() { }
    
    $f2 = <> function () { };
    
    $f3 = <> fn () => 1;
    
    Также будет возможность использовать атрибуты этапа компиляции. В качестве примера Benjamin Eberlei приводит атрибут <>, который добавляет вызов trigger_error в тело декорируемой функции:
    <>
    function test() {}
    // Deprecated: Function test is deprecated in %s
    
    <>
    function test2() {}
    // Deprecated: Function test2 is deprecated use test3() instead in %s
    
  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Allow trailing comma in parameter list — В PHP 8 можно будет использовать запятую после последнего параметра в определении функции.
    Скрытый текст
    class Uri {
        private function __construct(
            ?string $scheme,
            ?string $user,
            ?string $pass,
            ?string $host,
            ?int $port,
            string $path,
            ?string $query,
            ?string $fragment, // <-- !
        ) {
            ...
        }
    }
    
  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Change Default PDO Error Mode — Дефолтный режим для ошибок в PDO будет установлен как PDO::ERRMODE_EXCEPTION и в случае ошибок SQL будут бросаться исключения.
  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Stricter type checks for arithmetic/bitwise operators — Предложение принято, и в PHP 8 будет брошена ошибка TypeError, когда арифметический или побитовый оператор применяется к массиву, ресурсу или объекту.
  • ptcdaj_hxxx_o0_jr9lnltwphuk.png[RFC] Type casting in array destructuring expressions — Отклонено.
  • [RFC] Always available JSON extension — Предлагается сделать расширение JSON всегда доступным без возможности исключить из сборки.
  • [RFC] Match expression — Голосование по добавлению выражения match склоняется в сторону отклонения в текущем виде, потому что многим не нравится возможность использовать блоки:
    match ($x) {
        0 => {
            foo();
            bar();
            baz();
        },
    }
    
    Но, поскольку до feature-freeze в PHP 8 еще три месяца, то есть шансы обновить RFC и выставить его на повторное голосование.


cf862d9072784d04b621238ec137f2ca.png Инструменты


  • Deji69/encase-matching — Паттерн-мэтчинг для PHP в виде библиотеки. На случай если RFC не пройдет и со второй попытки.
  • brick/math — Библиотека для работы с числами произвольной точности. Будет работать, даже если не уставлены GMP или BCMath, а если они есть, то выберет наиболее быструю реализацию.
  • villfa/composer-substitution-plugin — Плагин для Composer, который заменяет плейсхолдеры в секции скриптов на динамические значения.
  • async-aws/aws — Легковесная и асинхронная альтернатива официальному SDK для AWS.
  • sensiolabs-de/deptrac 0.7 — Инструмент статического анализа кода для определения зависимостей между слоями приложения.
  • rybakit/phpunit-extras — Кастомные аннотации и методы expect*() для PHPUnit, чтобы сделать тесты чище.
  • LongRunning/LongRunning — Набор мелких, но полезных решений для long-running приложений на PHP (закрытие соединений, буферов, и тп).


96b65e92179a40f2bd1884549973ddd5.png Symfony


314bd0f0dfc54e3fa7f0c0daef1a2d25.png Laravel


569de4298b764a33894aa517e74324f9.png Yii


  • ruНовости Yii 2020, выпуск 4.
  • yiisoft/injector — Еще один компонент из экосистемы Yii 3. PSR-11-совместимый инжектор позволяет создавать объекты вместе с зависимостями через автоподключение (autowiring).
  • bizley/yii2-migration — Генерирует миграцию на основе текущего состояния базы и предыдущих миграций. В последней версии добавлена поддержка схем PostgreSQL.
  • videoПодробнейший туториал по Yii2 с нуля продолжительностью 7 часов на примере создания простого аналога YouTube.


Async PHP


329bec7c1e914963a1c5d2f2bfe99995.png Материалы для обучения


8dcc236774104f8286a40ceaea553820.png Аудио/Видео

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

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.

Больше новостей и комментариев в Telegram-канале PHP Digest.

Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 178

© Habrahabr.ru