Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 RC1, Laravel 6, Monolog 2 и другие релизы, Union Types и прочие новости из PHP Internals, порция полезных инструментов, пачка подкастов и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.4.0 RC1 — Стартовал цикл релиз-кандидатов ветки 7.4. Ожидается всего не менее 6 выпусков для стабилизации.
- PHP 7.1.32, PHP 7.2.22, PHP 7.3.9 — Релизы с исправлениями критичных ошибок безопасности, всем пользователям рекомендуется обновиться.
- Monolog 2.0.0 — После 4 лет разработки представлен Monolog 2.0. Требует PHP 7.2, используются тайпхинты где возможно и strict_types. Добавлены новые хэндлеры (SqsHandler, TelegramBotHandler) и другое. Monolog 1.x будет поддерживаться и дальше.
PHP Internals
- [RFC] Reclassifying engine warnings — Предлагается пересмотреть бросаемые нотисы и ворнинги в движке PHP и поправить классификацию там, где необходимо. Во многих случаях предлагается повысить уровень ошибки: Notice -> Warning, например, при попытке получить свойство у не-объекта, и Warning -> Error exception, например, при попытке использовать скаляр как массив. Ну и «Undefined variable» будет бросать Warning.
- [RFC] Union Types v2 — Предлагается ввести объединённые типы – это значит, что переменная может принимать один из перечисленных типов. Де-факто объединённые типы давно используются в PHPDoc, но теперь они действительно будут проверяться самим интерпретатором.
Предлагаемый синтаксисT1|T2|...
может быть использованы везде, где типы можно указывать сейчас:Скрытый текстclass Number { private int|float $number; public function setNumber(int|float $number): void { $this->number = $number; } public function getNumber(): int|float { return $this->number; } }
В качестве эксперимента RFC оформлен в виде пулл-реквеста и любой желающий может прокомментировать или выразить реакцию в виде emoji. Финальное голосование будет проходить так же, как и раньше на wiki.php.net. Судя по сообщению Никиты, первый эксперимент прошёл неплохо и было получено много ценных комментариев от сообщества.
- error_reporting=E_ALL in PHP 8 — В PHP 8 по умолчанию уровень ошибок будет установлен в
E_ALL
вместо текущего:E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
. - [RFC] Object Initializer — Документ пока в черновике, но весьма интересный. Предлагается реализовать синтаксис быстрой для инициализации объектов:
Скрытый текст
class Customer { public $id; public $name; } $customer = new Customer { id = 123, name = "John Doe", };
Инструменты
- RubixML/RubixML — Активно развивающаяся библиотека для применения машинного обучения на PHP. Доступны примеры: классификация активности человека по данным акселерометра, распознавание объектов на изображениях, прогнозирование цен.
- tsufeki/tenkawa-php-language-server — Реализация LSP для PHP, с выводом типов на основе PHPStan.
- Nyholm/psr7 — Легковесная и строгая реализация PSR-7.
- PHPCompatibility/PHPCompatibility 9.3.0 — Набор правил для PHP_CodeSniffer для проверки кода на совместимость с различными версиями PHP. Добавлены проверки для PHP 7.4.
- dbalabka/php-enumeration — Ещё одна реализация перечислений в PHP, без использования магических методов и Reflection.
- nunomaduro/yorn — Концепт модулей в PHP с синтаксисом 'import' и 'export' а-ля JavaScript. Идея не новая, но занимательная.
Symfony
- Sylius 1.6 — Популярная e-commerce платформа на базе Symfony: обновлённая админка, headless-режим.
- Abstracting API calls with Symfony serializer
- blastcloud/hybrid — Пакет для тестирования запросов Symfony/HttpClient.
- Неделя Symfony #662 (2-8 сентября 2019)
Laravel
- Laravel 6 — На конференции LaraconEU представлено мажорное обновление фреймворка. Это LTS релиз и будет получать обновления безопасности в течение 3 лет. Также теперь релиз следует Semver, а значит версия 7 выйдет уже этой зимой. Более подробно об изменениях на русском, и в видео на Laracasts.
- facade/ignition — Кроме прочего, в Laravel 6 реализована новая страница ошибок. Она базируется на Whoops, но предоставляет больше информации и даже предлагает исправлять простые ошибки не покидая браузера.
- beyondcode/laravel-view-xray — Удобно подсветит и подпишет вьюшки на странице.
- stefanzweifel/laravel-stats 2.0 — Artisan-команда, которая выведет разнообразную статистику кода.
- PHP Townhall #68: Behind the Facade — Taylor Otwell в гостях у Matt Trask и Ben Edmunds обсуждают, что нового в Laravel, бизнес-сторону дел, и организацию LaraconUS.
Yii
Async PHP
- Пишем RESTful API с помощью ReactPHP: Управляем заказами
- clue/reactphp-stdio — Асинхронный инструмент для создания по-настоящему интерактивных CLI-утилит. Пост в поддержку релиза.
Материалы для обучения
- Как использовать провайдеры данных в PHPUnit
- Разгоняем Magento Rest API c помощью RoadRunner
- Определение кодировки текста в PHP вместо mb_detect_encoding
- FFI: пишем на Rust в PHP-программе
- Какое главное отличие Dependency Injection от Service Locator?
- Ищем баги в PHP коде без статических анализаторов c помощью quasilyte/phpgrep.
Аудио/Видео
- Александр Макаров про безопасность в вебе: От базовых принципов до особенностей PHP — Слайды.
- Видеозаписи с Blackfire meetup в Datadog NYC HQ — О профилировании с помощью Blackfire, флейм-графах PHP-приложений в продакшене, разработке кэшируемых PHP-приложений.
- PHP Internals News #26 — О подготовке Symfony к PHP 7.4 с Nicolas Grekas.
- PHP Internals News #25 — Со Стасом Малышевым о вопросах безопасности при разработке интерпретатора PHP.
- Девшахта-подкаст с Петром Мязиным (Пятиминутка PHP) — Версус: Node.js или PHP в 2019.
- Пятиминутка PHP #65 — Современный WordPress в 2019 году.
- Пятиминутка PHP #66 — Переменные окружения и PHP.
- Пятиминутка PHP #67 — DDD #4 – Entity
Сообщество
- Matthew Weier O'Phinney, лидер Zend Framework (Laminas) и один из основателей PHP-FIG, закончил работу в Zend и ищет новое место
- Автор Xdebug Derick Rethans рассматривает возможность сделать Xdebug 3 платным для коммерческого использования. На что Joe Walkins ответил, что экосистеме нужен бесплатный отладчик и в таком случае он будет вынужден реализовать альтернативное расширение.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 163
Автор: Роман Пронский