Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Свежая подборка со ссылками на новости и материалы. В выпуске: 4 принятых RFC предложения для PHP 8, включая атрибуты (аннотации / декораторы), порция полезных инструментов, онлайн-конференции и митапы, видео, подкасты и многое другое.
Приятного чтения!
Новости и релизы
- 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, бесплатный онлайн-митап из двух докладов на английском.
PHP Internals
- [RFC] Attributes v2 — В PHP 8 будут добавлены полноценные атрибуты (аннотации / декораторы) с синтаксисом угловых скобок
<< >>
.Скрытый текстТакже будет возможность использовать атрибуты этапа компиляции. В качестве примера Benjamin Eberlei приводит атрибут<<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;
<<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
- [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, // <-- ! ) { ... } }
- [RFC] Change Default PDO Error Mode — Дефолтный режим для ошибок в PDO будет установлен как
PDO::ERRMODE_EXCEPTION
и в случае ошибок SQL будут бросаться исключения. - [RFC] Stricter type checks for arithmetic/bitwise operators — Предложение принято, и в PHP 8 будет брошена ошибка
TypeError
, когда арифметический или побитовый оператор применяется к массиву, ресурсу или объекту. - [RFC] Type casting in array destructuring expressions — Отклонено.
- [RFC] Always available JSON extension — Предлагается сделать расширение JSON всегда доступным без возможности исключить из сборки.
- [RFC] Match expression — Голосование по добавлению выражения
match
склоняется в сторону отклонения в текущем виде, потому что многим не нравится возможность использовать блоки:
Но, поскольку до feature-freeze в PHP 8 еще три месяца, то есть шансы обновить RFC и выставить его на повторное голосование.match ($x) { 0 => { foo(); bar(); baz(); }, }
Инструменты
- 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 (закрытие соединений, буферов, и тп).
Symfony
- Детальный обзор изменений компонента Security из Symfony 5.1 от одного из контрибьюторов.
- Предложение добавить новый компонент symfony/runtime, который позволит гибко отделять PHP-приложения от глобального состояния, благодаря новому интерфейсу
RuntimeInterface
. - Как переиспользовать код с бандлами Symfony 5? Часть 1. Минимальный бандл, Часть 2. Выносим код в бандл, Часть 3. Интеграция бандла с хостом: шаблоны, стили, JS, Часть 4. Расширение бандла в хосте, Часть 5. Конфигурация.
- Неделя Symfony #696 (27 апреля — 3 мая 2020)
Laravel
- spatie/laravel-dashboard — Инструмент для создания дашбордов на Laravel и Livewire. Вводный туториал и видеообзор.
- О реализации мультисайта (multitenant) на Laravel: миграции, тестирование, переключение сайтов.
- Вводный туториал по валидаторам ресурсов.
- Видеозаписи с зимнего Laracon Online 2020.
- Динамические отношения с использованием подзапросов.
- Продвинутая система авторизации действий с ресурсами в Laravel. Часть 3. Чтение/запись атрибутов, собственные модели.
- Создание собственного пакета для Laravel Nova: OptimalImage.
- SOA на Laravel и JSON-RPC 2.0.
- Архитектура сложных веб-приложений. С примерами на Laravel. — Книга полностью закончена и доступна для чтения онлайн и скачивания.
Yii
- Новости Yii 2020, выпуск 4.
- yiisoft/injector — Еще один компонент из экосистемы Yii 3. PSR-11-совместимый инжектор позволяет создавать объекты вместе с зависимостями через автоподключение (autowiring).
- bizley/yii2-migration — Генерирует миграцию на основе текущего состояния базы и предыдущих миграций. В последней версии добавлена поддержка схем PostgreSQL.
- Подробнейший туториал по Yii2 с нуля продолжительностью 7 часов на примере создания простого аналога YouTube.
Async PHP
- Сравнение асинхронных HTTP-клиентов Amphp vs. ReactPHP vs. Guzzle: результаты.
- Внутренности ReactPHP: Таймеры цикла событий.
Материалы для обучения
- Composer 2 Development Update — Если вы еще не успели попробовать альфу второй версии композера, то пока можно прочитать обзор изменений. Для разработчиков плагинов есть информация по обновлениям экосистемы.
- О времени высокой точности или как использовать доли секунды в MySQL и PHP.
- Как правильно шарить правила для PHP-CS-Fixer в команде.
- Статические конструкторы в PHP.
- Сочетание ивент-сорсинга и традиционного подхода в одном приложении.
- Подборка реальных схем баз данных из опенсорсных приложений — Может быть полезно в качестве вдохновения при проектировании своего приложения.
- Автономизация Unit-тестов в PHPUnit.
- Как раскатывать опасный рефакторинг на прод с миллионом пользователей?
- PSR Стандарты.
Аудио/Видео
- PHP Internals News #51 — С Larry Garfield об эргономике объектов в PHP по следам его блог поста.
- PHP Town Hall Episode 74 — С создателями Composer Jordi Boggiano и Nils Adermann об истории инструмента и том, что остается за кадром.
- Как использовать Git Stash в PhpStorm.
- Подкаст «Между скобок» № 5, 6 — С Алексеем Корнеевым из Skyeng об организации PHP-сообществ и проведении митапов.
- MoreView #5 — В гостях Сергей Жук, автор книг и скринкастов по ReactPHP.
- MoreView #6 — С Алиной Романовой, devrel в Badoo.
- Запись онлайн PHP-митапа от PHPofBy и Skyeng.
- Пятиминутка PHP № 77 — Как выглядят онлайн-конференции и как они будут выглядеть в будущем? C Олегом Буниным, организатором HighLoad++, РИТ++ и PHP Russia.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 178