Свежая подборка со ссылками на новости и материалы. В выпуске: PHPUnit 9 и другие релизы, 3 свежих RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.
Приятного чтения!
Новости и релизы
PHP Internals
- [RFC] Allow function calls in constant expressions — Сейчас в объявлениях констант можно использовать только литералы, константы и операции. В этом RFC предполагается добавить возможность вызова глобальных функций (всех или подмножество) в объявлениях констант, значений по умолчанию статических свойств, статических переменных и значений по умолчанию параметров.
Скрытый текст
class MyClass { const VALUES = [1, 0]; const C1 = count(self::VALUES); public static $p = count(self::VALUES); public function foo($param = count(self::VALUES)) { static $bar = count(self::VALUES); } }
- [RFC] __toArray() — Предлагается добавить новый магический метод
__toArray()
, который будет вызываться при явном приведении объекта к массиву, когда объект передаётся в качестве параметра функции с типом array или когда возвращается с указанием return type array.Скрытый текстclass Person { protected $name; protected $email; public function __toArray() { return [ 'name' => $this->name, 'email' => $this->email, ]; } } $person = new Person('John Doe', 'j.doe@example.com'); $personArray = (array) $person; // вызывает __toArray() function foo(array $person) { var_dump($person); // Здесь массив } function bar(Person $person): array { return $person; } var_dump(bar($person)); // и здесь массив
- [RFC] Userspace operator overloading — Рассматривается возможность реализовать перегрузку операторов в PHP. Предложение пока в статусе черновика, но активно обсуждается в Internals. А тем временем перегрузку операторов можно использовать в PHP 7.4 на основе lisachenko/z-engine.
- [RFC] Validation for abstract trait methods — Сигнатуры абстрактных методов из трейтов не валидируются на соответствие реализации. То есть вот такой код сейчас работает без ошибок:
Скрытый текст
trait T { abstract public function test(int $x); } class C { use T; // Работает сейчас, но не должно из-за несоответствия типов public function test(string $x) {} }
Предлагается исправить это поведение.
Ранее было опубликовано в виде пул-реквеста, но присутствует обратная несовместимость, которая требует пройти через RFC-процесс: если в текущем коде объявлен реализован абстрактный метод из трейта с другой сигнатурой, то изменение вызовет ошибку. - Предложения на голосовании: Static return type, Variable Syntax Tweaks, Allow ::class on objects, declare(function_and_const_lookup='global')
- Дженерики в PHP — Никита Попов опубликовал результаты исследования возможности реализации дженериков в PHP.
- php/doc-en — Документацию PHP на английском теперь можно редактировать через пул-реквесты на GitHub вместо старого редактора edit.php.net.
Инструменты
Symfony
Laravel
Async PHP
Материалы для обучения
Аудио/Видео
Занимательное
- bragful/ephp — Интерпретатор PHP на чистом Erlang.
- Xdebug cloud — На конференции SunshinePHP (на 47:45) Derick Rethans рассказал о новом проекте, цель которого упростить настройку Xdebug, особенно в случаях, когда могут быть трудности с сетью (Docker, удалённый сервер и тп). По сути – прокси.
- PhpQuiz — Telegram-канал, на котором публикуются задачи по PHP, архитектуре, PSR-стандартам и фреймворкам.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Telegram-канал: PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 172
Комментариев нет:
Отправить комментарий