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

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

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

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

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

PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 2 Новости и релизы

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

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

  • PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 4 [RFC] Attributes v2 [4] — В PHP 8 будут добавлены полноценные атрибуты (аннотации / декораторы) с синтаксисом угловых скобок << >>.
    Скрытый текст

    <<ExampleAttribute>>
    class Foo
    {
        <<ExampleAttribute>>
        public const FOO = 'foo';
    
        <<ExampleAttribute>>
        public $x;
    
        <<ExampleAttribute>>
        public function foo(<<ExampleAttribute>> $bar) { }
    }
    
    $object = new <<ExampleAttribute>> class () { };
    
    <<ExampleAttribute>>
    function f1() { }
    
    $f2 = <<ExampleAttribute>> function () { };
    
    $f3 = <<ExampleAttribute>> fn () => 1;
    

    Также будет возможность использовать атрибуты этапа компиляции. В качестве примера Benjamin Eberlei приводит [5] атрибут <<Deprecated>>, который добавляет вызов trigger_error в тело декорируемой функции:

    <<Deprecated>>
    function test() {}
    // Deprecated: Function test is deprecated in %s
    
    <<Deprecated("use test3() instead")>>
    function test2() {}
    // Deprecated: Function test2 is deprecated use test3() instead in %s
    
  • PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 5 [RFC] Allow trailing comma in parameter list [6] — В PHP 8 можно будет использовать запятую после последнего параметра в определении функции.
    Скрытый текст

    class Uri {
        private function __construct(
            ?string $scheme,
            ?string $user,
            ?string $pass,
            ?string $host,
            ?int $port,
            string $path,
            ?string $query,
            ?string $fragment, // <-- !
        ) {
            ...
        }
    }
    
  • PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 6 [RFC] Change Default PDO Error Mode [7] — Дефолтный режим для ошибок в PDO будет установлен как PDO::ERRMODE_EXCEPTION и в случае ошибок SQL будут бросаться исключения.
  • PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 7 [RFC] Stricter type checks for arithmetic/bitwise operators [8] — Предложение принято, и в PHP 8 будет брошена ошибка TypeError, когда арифметический или побитовый оператор применяется к массиву, ресурсу или объекту.
  • PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 8 [RFC] Type casting in array destructuring expressions [9] — Отклонено.
  • [RFC] Always available JSON extension [10] — Предлагается сделать расширение JSON всегда доступным без возможности исключить из сборки.
  • [RFC] Match expression [11]Голосование по добавлению выражения match склоняется в сторону отклонения в текущем виде, потому что многим не нравится возможность использовать блоки:
    match ($x) {
        0 => {
            foo();
            bar();
            baz();
        },
    }
    

    Но, поскольку до feature-freeze в PHP 8 еще три месяца, то есть шансы обновить RFC и выставить его на повторное голосование.

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

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

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

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

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

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

Async PHP

PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 25 Материалы для обучения

PHP-Дайджест № 179 (21 апреля – 4 мая 2020) - 29 Аудио/Видео

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

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

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

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

Автор: Роман Пронский

Источник [78]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/352711

Ссылки в тексте:

[1] PHP Russia Online: https://phprussia.ru/moscow/2020/

[2] PHP fwdays'20: https://fwdays.com/en/event/php-fwdays-2020

[3] Fwdays PHP online meetup: https://fwdays.com/en/event/php-online-meetup

[4] [RFC] Attributes v2: https://wiki.php.net/rfc/attributes_v2

[5] приводит: https://github.com/beberlei/php-src/pull/11

[6] [RFC] Allow trailing comma in parameter list: https://wiki.php.net/rfc/trailing_comma_in_parameter_list

[7] [RFC] Change Default PDO Error Mode: https://wiki.php.net/rfc/pdo_default_errmode

[8] [RFC] Stricter type checks for arithmetic/bitwise operators: https://wiki.php.net/rfc/arithmetic_operator_type_checks

[9] [RFC] Type casting in array destructuring expressions: https://wiki.php.net/rfc/typecast_array_desctructuring

[10] [RFC] Always available JSON extension: https://wiki.php.net/rfc/always_enable_json

[11] [RFC] Match expression: https://wiki.php.net/rfc/match_expression

[12] Deji69/encase-matching: https://github.com/Deji69/encase-matching

[13] RFC: https://habr.com/ru/post/500314/#match_rfc

[14] brick/math: https://github.com/brick/math

[15] villfa/composer-substitution-plugin: https://github.com/villfa/composer-substitution-plugin

[16] async-aws/aws: https://github.com/async-aws/aws

[17] sensiolabs-de/deptrac 0.7: https://github.com/sensiolabs-de/deptrac/releases/tag/0.7.0

[18] rybakit/phpunit-extras: https://github.com/rybakit/phpunit-extras

[19] LongRunning/LongRunning: https://github.com/LongRunning/LongRunning

[20] Детальный обзор изменений компонента Security: https://wouterj.nl/2020/04/authenticators-new-symfony-security

[21] Предложение добавить новый компонент symfony/runtime: https://github.com/symfony/symfony/pull/36652

[22] Часть 1.: https://habr.com/ru/post/498134/

[23] Часть 2.: https://habr.com/ru/post/498536/

[24] Часть 3.: https://habr.com/ru/post/498610/

[25] Часть 4.: https://habr.com/ru/post/499074/

[26] Часть 5.: https://habr.com/ru/post/499076/

[27] Неделя Symfony #696 (27 апреля — 3 мая 2020): https://symfony.com/blog/a-week-of-symfony-696-27-april-3-may-2020

[28] spatie/laravel-dashboard: https://github.com/spatie/laravel-dashboard

[29] Livewire: https://laravel-livewire.com/

[30] Вводный туториал: https://freek.dev/1645-building-a-realtime-dashboard-powered-by-laravel-livewire-and-tailwind-2020-edition

[31] видеообзор: https://vimeo.com/412354485

[32] О реализации мультисайта (multitenant) на Laravel: https://www.youtube.com/watch?v=592EgykFOz4

[33] Вводный туториал по валидаторам ресурсов: https://laracasts.com/series/guest-spotlight/episodes/11

[34] Видеозаписи с зимнего Laracon Online 2020: https://vimeo.com/showcase/laracononline

[35] Динамические отношения с использованием подзапросов: https://laravel.demiart.ru/dynamic-relationships-using-subqueries/

[36] Часть 3. Чтение/запись атрибутов, собственные модели: https://habr.com/ru/post/499112/

[37] Создание собственного пакета для Laravel Nova: OptimalImage: https://habr.com/ru/post/498548/

[38] SOA на Laravel и JSON-RPC 2.0: https://habr.com/ru/post/499626/

[39] Архитектура сложных веб-приложений. С примерами на Laravel.: https://github.com/adelf/acwa_book_ru

[40] Новости Yii 2020, выпуск 4: https://yiiframework.ru/news/260/novosti-yii-2020-vypusk-4

[41] yiisoft/injector: https://github.com/yiisoft/injector

[42] bizley/yii2-migration: https://github.com/bizley/yii2-migration

[43] Подробнейший туториал по Yii2 с нуля: https://www.youtube.com/watch?v=whuIf33v2Ug

[44] Сравнение асинхронных HTTP-клиентов: https://medium.com/@DonnaInsolita/%D0%B2%D0%B4%D0%BE%D1%85%D0%BD%D0%BE%D0%B2%D0%B8%D0%B2%D1%88%D0%B8%D1%81%D1%8C-%D0%B7%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E-%D0%BD%D0%B0-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B5-moreview-c-%D1%81%D0%B5%D1%80%D0%B3%D0%B5%D0%B5%D0%BC-%D0%B6%D1%83%D0%BA%D0%BE%D0%BC-%D0%B8-%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BC-%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9-fast-web-f9715b21517f

[45] результаты: https://github.com/Insolita/php-async-benchmarks

[46] Внутренности ReactPHP: Таймеры цикла событий: https://sergeyzhuk.me/2020/05/01/event-loop-inside-timer/

[47] Composer 2 Development Update: https://blog.packagist.com/composer-2-development-update/

[48] попробовать: https://t.me/phpdigest/137

[49] информация по обновлениям экосистемы: https://github.com/composer/composer/issues/8726

[50] О времени высокой точности или как использовать доли секунды в MySQL и PHP: https://badootech.badoo.com/high-precision-time-how-to-use-fractional-seconds-in-mysql-and-php-fd9b89afe9ad

[51] Как правильно шарить правила для PHP-CS-Fixer в команде: https://laravel-news.com/sharing-php-cs-fixer-rules-across-projects-and-teams

[52] Статические конструкторы в PHP: https://liamhammett.com/static-constructors-in-php-y0zPVbQl

[53] Сочетание ивент-сорсинга и традиционного подхода в одном приложении: https://stitcher.io/blog/combining-event-sourcing-and-stateful-systems

[54] Подборка реальных схем баз данных из опенсорсных приложений: https://drawsql.app/templates/tags/php

[55] Автономизация Unit-тестов в PHPUnit: https://habr.com/ru/post/499432/

[56] Как раскатывать опасный рефакторинг на прод с миллионом пользователей?: https://habr.com/ru/company/manychat/blog/499034/

[57] PSR Стандарты: https://habr.com/ru/post/458484/

[58] PHP Internals News #51: https://phpinternals.news/51

[59] Larry Garfield: https://twitter.com/crell

[60] блог поста: https://hive.blog/php/@crell/improving-php-s-object-ergonomics

[61] PHP Town Hall Episode 74: https://phptownhall.com/episode-74-composer-self-update/

[62] Jordi Boggiano: https://twitter.com/seldaek

[63] Nils Adermann: https://twitter.com/naderman

[64] Как использовать Git Stash в PhpStorm: https://www.youtube.com/watch?v=h0SxgcCLhn8

[65] Подкаст «Между скобок» № 5: https://soundcloud.com/between-braces/5-aleksey-korneev-kak-organizovat-svoyo-regionalnoe-php-soobshchestvo

[66] 6: https://soundcloud.com/between-braces/6-aleksey-korneev-kak-provesti-onlayn-metan

[67] MoreView #5: https://www.youtube.com/watch?v=rD4a6ieeSH8

[68] MoreView #6: https://www.youtube.com/watch?v=c__neN62a-E

[69] Запись онлайн PHP-митапа от PHPofBy и Skyeng: https://www.youtube.com/watch?v=se3F83O0ZiY

[70] Пятиминутка PHP № 77: https://5minphp.ru/episode77/

[71] личку: https://habrahabr.ru/conversations/pronskiy/

[72] почту: mailto:roman@pronskiy.com

[73] твиттер: https://twitter.com/pronskiy

[74] PHP Digest: https://t.me/phpdigest

[75] Прислать ссылку: https://bit.ly/php-digest-add-link

[76] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/

[77] Предыдущий выпуск: PHP-Дайджест № 178: https://habr.com/ru/post/498246/

[78] Источник: https://habr.com/ru/post/500314/?utm_source=habrahabr&utm_medium=rss&utm_campaign=500314