Свежая подборка со ссылками на новости и материалы. В выпуске: релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
Приятного чтения!
Новости и релизы
- CodeIgniter 4.0 — Спустя 5 лет разработки вышла новая версия фреймворка. Переписан с нуля, но всё так же в виде единого пакета. Работает на PHP 7.2+, реализованы PSR-1,3,4.
- Ближайшие мероприятия:
• Ярославль, 12 марта: BeerPHP
• Воронеж, 16 марта: 2-й PHP-митап городского чата
• Екатеринбург, 26 марта: 3-й PHP-митап
• Казань, 28 марта: 2-й PHP-митап
• skyeng/php-communities — Открытый список PHP-событий, спикеров и организаторов.
PHP Internals
- [RFC] Attributes v2 — Вторая попытка добавить полноценные аннотации в PHP с синтаксисом двойных угловых скобок
<<...>>
. Готов черновик реализации. Ранее уже были предложения о простых аннотациях и атрибутах, последнее предложение как раз не прошло голосование.Скрытый текстuse DoctrineORMMapping as ORM; <<ORMEntity(["repositoryClass" => UserRepository::class])>> <<ORMTable("users")>> class User { <<ORMId, ORMColumn, ORMGeneratedValue>> public int $id; <<ORMColumn(["unique" => true])>> public string $email; <<ORMManyToOne()>> public ?Address $address; }
- [RFC] Increment/Decrement Fixes — Операторы инкремента и декремента в некоторых случаях ведут себя не так же, как явное прибавление/вычитание единицы с присвоением. Например:
Скрытый текст
<?php $a = []; $a = ++$a; // [] and no errors $a = $a + 1; // Fatal error
В PHP 8 предлагается исправить эти и другие несоответствия и бросать
TypeError
где необходимо. - [RFC] Stringable — Предложение от Nicolas Grekas принято. В PHP 8 можно будет использовать union-тип
string|Stringable
там, где ожидается строка, и передавать классы с__toString()
. При этом интерфейс явно добавлять не нужно. - [PR] Make sorting stable — Стандартные функции сортировки в PHP не являются стабильными. Это значит, что оригинальный порядок элементов с одинаковыми значениями не гарантируется (пример). Предлагается это исправить и сделать сортировки стабильными. Правда, при большом количестве одинаковых элементов такой фикс отразится на производительности.
Инструменты
- shivammathur/setup-php — GitHub action для добавления в свой воркфлоу, который подготовит среду PHP для дальнейших шагов.
- minicli/minicli — Пакет для создания консольных утилит. Серия постов в поддержку.
- cebe/php-openapi — Инструмент читает OpenAPI файлы с описанием сервисов в удобные для работы объекты PHP.
Symfony
- На SymfonyCasts выкладывают серию туториалов по разработке на Symfony 5.
- Автоматическая настройка Doctrine-репозиториев как сервисов.
- Неделя Symfony #688 (2-8 марта 2020)
Laravel
- Laravel 7 — В релизе:
• laravel/airlock — новый компонент для аутентификации в SPA.
• Кастомные касты для Eloquent — Туториал по использованию.
• Компоненты Blade теперь можно описывать в виде классов и кастомных HTML-тегов вместо тега@component
.
• HTTP-клиент — Добавлена обёртка над Guzzle с более простым интерфейсом для типичных задач. За основу взят kitetail/zttp.
• И другие изменения .
Подробные видеообзоры изменений в Laravel 7 есть на Laracasts и на канале Coder's Tape. - livewire v1.0 — Фронтенд фреймворк для Laravel, который позволяет делать биндинги из Blade к PHP-классам и не писать дополнительного JS-кода. Видеотуториал по созданию контактной формы.
- nunomaduro/laravel-mojito — Простенький пакет для тестирования вьюшек. Демо использования.
- Оптимизация циклических отношений в Laravel.
- Подкаст Тейлора Laravel Snippet #23: Laravel 7.x, Forge, Vapor, Speaking vs. Silence.
- Видео с Laracon Australia 2019
- Принцип Единой Ответственности (SRP) на примере Laravel.
- Laravel+Docker+Gitlab. С чего начать.
Yii
- yiisoft/friendly-exception — Релиз первого пакета из Yii 3. Интерфейс для описания человекопонятных исключений сразу с возможным решением.
Laminas
- Состоялось первая встреча Технического руководящего комитета проекта Laminas — Из протокола можно узнать о планах развития и финансирования Laminas.
Async PHP
- driftphp/reactphp-dbal — DBAL для ReactPHP на основе Doctrine.
Материалы для обучения
- Как устроен JIT в PHP 8.
- Подборка хороших практик программирования на PHP от Benjamin Eberlei.
- Как я нашёл и исправил баг в стандартной библиотеке PHP.
- Использование RabbitMQ вместе с MonsterMQ, 2, 3, 4, 5.
- Маппинг данных из реляционной БД.
- Избавляемся от рутины со своим плагином для PhpStorm.
- Как написать хороший README — Также в тему отличный доклад от Андрея Ситника о том, как продвигать open-source проекты.
Аудио/Видео
- Видео с RND PHP #2 (Ростов-на-Дону)
- Видео с PHP-митапа в Йошкар-Оле
- Подкаст The Undercover ElePHPant #9 — О фоновых процессах и воркерах с Samuel Rose (Symfony core). Также основные моменты в посте Пять проблем надёжного запуска фоновых процессов на PHP.
- Подкаст Voices of the ElePHPant — Интервью с Sara Golemon и Derick Rethans об изменениях в PHP 8.
- PHP Internals News podcast #43 — C Никитой Поповым о фиксах трейтов и лексера.
- PHP Internals News podcast #42 — C Jan Böhmer о перегрузке операторов.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 174
Автор: Роман Пронский