Свежая подборка со ссылками на новости и материалы. В выпуске: Что будет с поддержкой PHP на Windows, PHP 8 Alpha 2, ReactPHP — официально продакшн-реди, 2 новых RFC предложения и 6 на голосовании, порция полезных инструментов, статьи, видео и подкасты.
Приятного чтения!
Новости и релизы
- PHP 8.0.0 Alpha 2 — Заморозка фич запланирована на 4 августа. Учитывая регламент с 2-недельным обсуждением и голосованием, это значит, что добавиться могут только фичи, которые уже в обсуждении/голосовании.
- PHP 7.4.8, PHP 7.3.20, PHP 7.2.32 — Секьюрити релизы для Windows, исправляющие уязвимость CVE-2020-8169 в libcurl. Для прочих систем — обычный багфикс.
- PHP Russia 2020, 29 ноября, Москва — Дату и место определили — отметим релиз PHP 8 вместе!
- Microsoft, Windows и поддержка PHP — Сначала представитель Microsoft написал, что компания продолжит поддерживать разработку и сборку PHP под Windows для версий 7.2, 7.3 и 7.4 до тех пор, пока они официально поддерживаются. Но не будет поддерживать разработку PHP для Windows начиная с версии 8.0.
Позже он уточнил, что Microsoft предоставляла билд-инфраструктуру для сообщества PHP, а после ежегодного пересмотра бюджетов решили, что не будут этого делать. И хотя они больше не будут заниматься билдами PHP для Windows, тем не менее, останутся вовлечены в PHP, продолжат поддерживать PHP-разработчиков и сотрудничество с сообществом по секьюрити-фиксам.
Это подтвердил Joe Watkins, который вместе с Никитой и настраивал все пайпланы в Azure:
PHP Internals
PHP 8.0
- [RFC] Match expression v2 — Пара отличных постов с подробным описанием нового выражения: match или switch и о выражении match со сравнительной таблицей.
К вопросу о синтаксисе или почему=>
, а не:
— принятый синтаксис привычен для match-выражений и используется в других языках, например, в точности такой же в C#, Rust, Scala, а похожий (->) в Java и Kotlin. - [RFC] StackFrame class — Сейчас функция
debug_backtrace()
возвращает стек вызовов в виде массива массивов. Предлагается возвращать массив объектов StackFrame, который реализует ArrayAccess. - [RFC] Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON — Предложение отклонено, но в 8.1 планируется полностью убрать имена токенов в сообщениях об ошибках.
Целая пачка предложений находится на стадии голосования и, похоже, все пройдут:
- [RFC] Named Arguments — 49:17 Голосование по именованным аргументам вызвало немало споров и поляризовало сообщество.
Те, кто против опасаются проблем с обратной совместимостью и раздутыми API.
В поддержку предложения отличный пост зачем нужны именованные аргументы в PHP. А также подробный ответ Никиты в Internals.
И пример использования вместе с объявлением свойств в конструкторе:
Скрытый текстСейчас:
В PHP 8 с именованными аргументами:
- [RFC] Treat namespaced names as single token — 28:3.
- [RFC] Saner numeric strings — 20:3.
- [RFC] Saner string to number comparisons — 31:1.
- [RFC] Nullsafe operator — 44:2.
- [RFC] Allow trailing comma in closure use lists — 44:0.
PHP 8.1
- [RFC] Deprecations for PHP 8.1 — Несколько возможностей предлагается объявить устаревшими. Сначала изменения предлагалось внести изменения в PHP 8.0, но Nikolas Grekas посоветовал сделать релиз 8.0 без депрекейшнов, по аналогии с *.0 релизами Symfony.
- [RFC] Objects can be declared falsifiable — В RFC предлагается добавить новый интерфейс
Falsifiable
с магическим методом__toBool()
, который позволит объектам определять и объявлять себя истинными или ложными и соответственно использоваться какbool
во всех подходящих контекстах.
В тему интересная мысль о том, что интерфейсы с суффиксами -able — плохая идея: - FFI Improvements — Пока неофициальное предложение от камрада SerafimArts по исправлениям для FFI.
- В PHP 8.1 планируется Enum — Ilija Tovilo написал, что планирует реализовать тип
Enum
в PHP 8.1. А Larry Garfield уже подготовил подробное исследование и сравнил перечисления и подобные им типы в разных языках.
Инструменты
- JBZoo/Composer-Diff — Показывает разницу между двумя версиями файла composer.lock, помогает делать подробные changelog'и в MR/PR после «composer update». Прислал smetdenis.
- JBZoo/Composer-Graph — Визуализация графа зависимости для composer.json.
- ergebnis/factory-bot — Фабрика фикстур для Doctrine ORM. Подробнее об использовании и мотивации в посте.
- phpsandbox.io — Аналог codepen/jsfiddle только для PHP. Веб-сайт для быстрого тестирования и демонстрации кода.
Symfony
- Управление секретами в Symfony
- REST API в Symfony (без FosRestBundle) с использованием JWT аутентификации. Часть 1
- 10 преимуществ конфигов на PHP вместо YAML
- Неделя Symfony #707 (13-19 July 2020)
Laravel
- spatie/laravel-schedule-monitor — Пакет показывает статус задач выполняемых по расписанию (cron) в Laravel. Вводный пост.
- Использование подписанных Laravel URL-адресов для добавления ссылок на действия в сообщениях электронной почты
- Туториал по возможностям Illuminate\Http\Request.
- Laravel-Дайджест (13–19 июля 2020)
- Запускаем Laravel на AWS Lambda с помощью Bref — и brefphp/laravel-bridge.
- Laravel Worldwide Meetup #1 — Ленивые коллекции в Laravel, Мощь очередей Laravel.
Yii
- Новости Yii 2020, выпуск 5
- tbreuss/yii2-inertia — Адаптер для использования Inertia.js с Yii 2.
Async PHP
- reactphp/http 1.0 — Первый стабильный релиз асинхронных HTTP клиента и сервера на базе ReactPHP.
Все основные компоненты экосистемы ReactPHP теперь официально продакшн-реди и имеют долгосрочную поддержку не менее 2х лет.
PhpStorm
- В PhpStorm будет поддержка Psalm и PHPStan — С большой вероятностью уже в релизе 2020.3, который выйдет в конце года.
Плагины оформлены в виде опенсорс-проектов на GitHub JetBrains/phpstorm-psalm-plugin и JetBrains/phpstorm-phpstan-plugin. Можно наблюдать и участвовать в процессе, или использовать в качестве источника вдохновения для своих плагинов. - Общие (расшаренные) индексы в IDE от JetBrains — С помощью нового плагина можно использовать предварительно сгенерированный индекс для проекта. В будущем можно будет считать индекс для пакета и поставлять его вместе с релизом.
- PhpStorm, But Better — Tips & Tricks Newsletter — Рассылка с советами и трюками по PhpStorm. Уже доступен первый выпуск.
- Новое видео от Christoph Rumpel: О плагинах PhpStorm для работы с Laravel.
- PhpStorm 2020.2 Beta — До релиза осталось совсем недолго. Обзор основных фич уже можно посмотреть в серии видеороликов What’s Coming in PhpStorm 2020.2.
Материалы для обучения
- Serverless LAMP: заменяем веб-сервер.
- GitHub Actions как CI и PHP проектов.
- Inertia.js – современный монолит.
- readable — еще один линтер для PHP, но в этот раз на JS.
- Как я писал кодогенератор на PHP и что из этого получилось.
- POST запрос, составное содержимое (multipart/form-data).
Аудио/Видео
- Открытое собеседование PHP Point #1: Валентин Удальцов vs Патрик Фельдеш.
- Подкаст Между скобок № 10: Владимир Янц — Нужны ли Unit-тесты.
- Еще видео с PHP fwdays 2020: Никита Попов — What’s new in PHP 8.0?, Интервью с Jordi Boggiano, Макс Рафалко — Принципы проектирования пакетов на практике, Derick Rethans — Introduction to PHP Extensions.
- Интервью с Marco Pivetta про опенсорс в формате стрима.
- PHP Internals News #61 — С Никитой Поповым о стабильной сортировке в PHP 8.
- PHP Internals News #62 — С George Peter Banyard об изменениях обработки строк с числами.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 183
Clasen01
Спасибо за подборку!