Свежая подборка со ссылками на новости и материалы. В выпуске: 4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое.
Приятного чтения!
PHP Internals
- [RFC] Variable Syntax Tweaks — В PHP 7 был исправлен ряд неконсистентностей в синтаксисе переменных Uniform Variable Syntax RFC. Некоторые упущения, связанные с разыменованием, предлагается доисправить в PHP 8.
- [RFC] Static return type — Ключевое слово
static
в контексте декларации типа означает позднее статическое связывание. Предлагается сделать возможным его использование в качестве возвращаемого типа методов. Удобно в текучих интерфейсах или статических конструкторах.Скрытый текстДля свойств класса и параметров методов это не имеет смысла и работать не будет.class Test { public function doWhatever(): static { // Do whatever. return $this; } }
- [RFC] Allow ::class on objects — В PHP 8 предлагается сделать возможным получение полного имени класса из объекта
$object::class
по аналогии с тем, как это работает сейчасFoo\Bar::class
. - [RFC] «use global functions/consts» statement — Если функция или константа используются без префикса, то PHP попытается сначала найти их в текущем неймспейсе, а затем в глобальном. Автор предлагает добавить директивы
use global functions;
иuse global consts;
, которые заставят интерпретатор функции и константы без префиксов по-умолчанию искать в глобальном пространстве. - [RFC] Weak maps — Предложение принято и WeakMaps будут доступны в PHP 8.
Несколько изменений доступны в виде пул-реквестов:
- [PR] Deprecate required param after optional — В данном реализовано предупреждение об использовании обязательного параметра после опционального в сигнатуре функции:
function test(FooBar $param = null, $param2)
Раньше это могло иметь смысл, но с nullable типами можно написатьfunction test(?FooBar $param, $param2)
. - [PR] Check abstract method signatures coming from traits — Сигнатуры абстрактных методов из трейтов не валидируются на соответствие реализации. То есть вот такой код сейчас работает без ошибок:
Скрытый текстПул-реквест исправляет это поведение.
trait T { abstract function neededByTheTrait(int $a, string $b); } class C { use T; function neededByTheTrait(array $a, object $b) {} }
- [PR] Ensure correct signatures for PHP magic methods — А в этом PR, реализована проверка сигнатур магических методов. На данный момент она есть только для
__toString()
и__clone()
, а вот такое, например, работает без ошибок:Скрытый текстclass Foo { function __get(int $name) {} } (new Foo)->{42};
Инструменты
- nikic/PHP-Fuzzer — Экспериментальный фазер для PHP-библиотек от Никиты Попова. Инструмент генерирует случайные входные данные для функций и может помочь найти неожиданные баги.
- lukanetconsult/network-address-types — Набор типов для представления сетевых адресов в PHP.
- carlosas/phpat — Статический анализатор для тестирования архитектуры. Предоставляет набор селекторов и правил.
- maglnet/ComposerRequireChecker — Инструмент проверит, что все используемые зависимости вашего проекта указаны явно в
composer.json
. - php-service-bus/service-bus — Фреймворк на базе Amphp для построения приложений с использованием паттернов Saga, CQRS, EventSourcing, Message Bus.
- tigitz/php-spellchecker — Обёртка для проверки текста на ошибки набором разных спелл-чекеров.
- franzliedke/studio — Инструмент для разработки Composer пакетов при одновременном использовании.
Symfony
Laravel
Zend / Laminas
CMS
Материалы для обучения
Аудио/Видео
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 170
Комментариев нет:
Отправить комментарий