Свежая подборка со ссылками на новости и материалы. В выпуске: 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 — На video конференции SunshinePHP (на 47:45) Derick Rethans рассказал о новом проекте, цель которого упростить настройку Xdebug, особенно в случаях, когда могут быть трудности с сетью (Docker, удалённый сервер и тп). По сути – прокси.
  • PhpQuiz — Telegram-канал, на котором публикуются задачи по PHP, архитектуре, PSR-стандартам и фреймворкам.

Спасибо за внимание!

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.

Telegram-канал: PHP Digest.

Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 172