PHP Дайджест № 211 (1 – 13 сентября 2021)

от автора

Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира PHP. Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle пропал с GitHub. Для PHP 8.2 предложены два новых RFC: про $this в качестве тайпхинта для возвращаемых значений, и про удаление старых видов колбэков. Также в выпуске порция полезных инструментов, статьи и видео.

Приятного чтения!

Новости

PHP Internals

  • [RFC] $this return type

    Никита выдвинул на обсуждение идею использовать $this как тип возвращаемого значения. При этом интерпретатор проверит, что возвращается именно тот же самый объект.

    То есть если сравнивать с self и static:

    • self — возвращаемое значение должно быть экземпляром класса, который задает данный тип;
    • static — возвращаемое значение должно быть экземпляром класса, который вызывает метод с данным объявлением типа;
    • $this — возвращаемое значение должно быть тем же экземпляром, что и экземпляр, который вызывает метод с данным объявлением типа.

    class Test {     public function method(): $this {         return $this;     }      public function not_this(): $this {         return new self(); // Fatal Error     } } 

  • [RFC] Deprecate partially supported callables

    Сейчас есть несколько способов описать колбэк функцию, которые пройдут проверку на тип callable, через вызов is_callable() и в качестве аргумента call_user_func(). Но при этом вызвать их как обычную анонимную функцию $callable() не получится.

    Предлагается задепрекейтить такие не консистентные варианты:

    "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar::method"] 

    Нормальные вызовы вида "function", "Foo::method", ["Foo", "method"] и [new Foo, "method"] не затронуты этим предложением. Потому что для них вызов через скобки сработает:

    class Foo {     function method() {         echo 'method';     } } [new Foo, "method"](); // > method 

  • Alias stdClass to DynamicObject?

    В контексте удаления динамических (несуществующих) свойств появилась идея переименовать класс stdClass в DynamicObject (сделать алиас). Потому что так его предназначение будет понятно из названия.

  • Все RFC на GitHub

    В качестве эксперимента Ben Ramsey, релиз-менеджер PHP 8.1, экспортировал в Git все (838) когда-либо обсуждавшиеся RFC, включая историю изменений для каждого RFC.

Инструменты

  • phabelio/phabel — Транспайлер для PHP. Позволяет использовать фичи из последних версий PHP в более старых окружениях или когда нужно поддерживать обратную совместимость. Также можно делать поддержку несуществующих фич, например, ключевых слов async/await.

    Подобные инструменты уже были раньше, например marcioAlmada/yay или preprocess.io. А делать бэкпорты умеет и Rector. Но фишка Phabel в прозрачной интеграции с Сomposer.

  • VKCOM/noverify — Быстрый статический анализатор и линтер для PHP-проектов реализованный на Go. Добавлена поддержка PHP 8 и теперь его можно поставить через Composer.
  • koriym/Koriym.Attributes — Простой инструмент позволяет читать PHPDoc аннотации doctrine/annotations и атрибуты PHP 8 через единый интерфейс. Для тех же задач есть более продвинутый spiral/attributes.
  • niklongstone/regex-reverse — Генерирует случайную строку, которая удовлетворяет заданному регулярному выражению.
  • Innmind/Immutable — Довольно интересная иммутабельная реализация примитивов: Sequence, Set, Map, Str, RegExp.
  • grep.app — Удобный инструмент для быстрого поиска кода по Гитхабу.

Symfony

Laravel

Yii

Статьи


  • Шутка и баг, конечно, но все же 🙂
    От версии к версии мы собираемся случайным образом изменять некоторые константы в PHP, чтобы никто не полагался на захардкоженые значения.


Подписывайтесь на Telegram-канал PHP Digest.

Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, поставьте, пожалуйста, ему плюс.

Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам

Предыдущий выпуск: PHP-Дайджест № 210


ссылка на оригинал статьи https://habr.com/ru/articles/577660/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *