PHP Дайджест № 214 (11 – 25 октября 2021)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира PHP.
Конфликт вокруг расширения Swoole и создание форка OpenSwoole; асинхронные фреймворки Amp и ReactPHP выпустили общую реализацию ивент-лупа; PHP 8.1 RC 4; принят первый RFC для 8.2.
Также в выпуске два поста от Никиты Попова, полезные статьи, видео.

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

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

Новости


  • Конфликт вокруг Swoole привел к созданию форка OpenSwoole


    Вся суть конфликта изложена в этом треде на GitHub.

    В Swoole был добавлен код, который что-то скачивает с закрытого ресурса:


    Это, конечно же, можно расценивать как проблему безопасности. Один из контрибьюторов Swoole, Bruce Dou @doubaokun, указал на эту проблему.

    Позже, doubaokun попытался расширить свои права и выпустить релиз расширения на PECL. Его изменения откатили, а он в ответ накатил их снова и в закрытом чате высказывался непотребно в сторону автора Swoole @matyhtf. После чего у Bruce Dou отобрали права доступа к репозиторию и тогда он объявил о создании своего форка.

    История со скачиванием файлов с стороннего сервера, конечно, портит репутацию Swoole. Но я склонен больше доверять авторам расширения, чем Bruce Dou. Вот почему:
    • Проблемный кусок кода быстро удалили. По словам авторов, планировалось реализовать дашборд для Swoole с отображением всяких метрик. Этот дашборд будет открыт в отдельном расширении.
    • Создатель форка за 9 лет существования Swoole сделал всего 49 коммитов и не входит даже в топ-10 контрибьюторов.
    • Во время обсуждения RFC файберов, автор форка довольно токсично высказывался в твиттере, при этом отказывался писать в Internals по существу.


    Тем не менее стоит отдать должное Bruce Dou, за то, что поддерживал официальный сайт, твиттер и Slack-сообщество Swoolе и вообще занимался популяризацией расширения.

    Будем наблюдать за Swoole и OpenSwoole.

  • Amphp и ReactPHP объединили усилия и опубликовали revoltphp/event-loop


    Команды разработчиков двух популярных асинхронных фреймворков Amphp и ReactPHP выпустили совместную абстракцию событийного цикла на основе файберов.

    Файберы будут доступны в PHP 8.1+ из коробки, а на PHP 8.0 можно поставить расширение ext-fiber.

    По умолчанию ивент-луп работает с использованием системного вызова select. Также поддерживаются низкоуровневые событийные библиотеки ev, event и uv. Последняя, к слову, используется в Node.js для ивент-лупа.

    Следующие версии Amp и ReactPHP не будут поставляться с собственной реализацией цикла событий, а будут напрямую использовать RevoltPHP.

  • PHP 7.4.25, PHP 8.0.12


    Багфиксы для актуальных веток.
  • PHP 8.1 RC4


    Четвертый релиз-кандидат доставлен по расписанию. Впереди еще как минимум два.

    Пара свежих видео от Brent Roose:
    • video Improvements to Array Spreading
    • video Enums

  • Классный видеоролик — PHP за 100 секунд:


PHP Internals


  • [RFC] Deprecate partially supported callables


    Предложение принято. В PHP 8.2 следующие варианты вызова колбэков будут объявлены устаревшими:
    "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"] не затронуты этим предложением. Потому что они для них вызов через скобки работает:
    "printf"('Hello World');
    "Foo::method"();
    [new Foo, "method"]();
    

  • [RFC] Deprecate dynamic properties


    В текущих версиях PHP, если попытаться записать в несуществующее свойство, то оно будет автоматически создано.

    В современном коде это редко делается намеренно, чаще это опечатка или плохая практика.

    В этом RFC предлагается задепрекейтить и впоследствии удалить возможность создания динамических (необъявленных) свойств.

    class User {
        public $name;
    }
    
    $user = new User;
    
    // Assigns declared property User::$name.
    $user->name = "foo";
    
    // Oops, a typo:
    $user->nane = "foo";
    // PHP <= 8.1: Молча создает динамическое свойство $user->nane.
    // PHP    8.2: Вызывает предупреждение, но все равно создает динамическое свойство.
    // PHP    9.0: Выбрасывает исключение Error.
    


    Это изменение не будет касаться класса stdClass и унаследованных от него. Поведение магических __get/__set также не затрагиваются этим изменением.

    Также теперь предлагается еще добавить атрибут #[AllowDynamicProperties], которым можно пометить любой класс и тогда в нем можно будет объявлять динамические свойства.
  • Add loop mode (`-L`) in the CLI SAPI


    Интересная идея от Matthieu Napoli, автора Bref.

    Предлагается добавить режим «цикла» для PHP: php -L script.php.

    Это как если запустить скрипт в цикле while(true) {}, но только на каждой итерации скрипт изолирован. По сути, это клон поведения PHP-FPM (worker) для CLI.

    Такой режим может пригодиться для всяких воркеров, AWS Lambda и подобных окружений.


Symfony


  • В symfony/console добавили автодополнение команд в терминале из коробки. Все пакеты на основе symfony/console автоматически тоже получают автодополнение.
  • История нового дизайна документации Symfony — symfony.com/doc.
  • Неделя Symfony #773 (18-24 Октября 2021)


Laravel


  • Laravel Tinker — PhpStorm плагин, который позволяет использовать Laravel Tinker прямо в IDE.
  • spatie/laravel-site-search — Полнотекстовый поиск для сайта на базе Meilisearch. Статья и видео в поддержку.
  • Как работает Livewire (очень подробно).
  • video Тестирование сложных фич с помощью Laravel и Pest.
  • video Releasing Laravel — Стрим от одного из участников Laravel core-команды, где он демонстрирует процесс релиза пакетов Laravel.


Yii


  • Релизы пакетов Yii 3: Yii View 4.0.0, CSRF 1.1.0, Html 2.2.0,Symfony Mailer 1.0.0


Статьи


  • Никита Попов опубликовал два крутых поста про внутренности PHP: Как работает opсache и про раннее связывание в PHP.
  • Работа с деревьями в PHP
  • Как выполнять HTTP-запросы со сжатием с помощью Curl и PHP.
  • smknstd/modern-php-cheatsheet — Шпаргалка по современному PHP.
  • Расширенные возможности MessagePack — MessagePack — это бинарный формат для сериализации данных. В посте про расширение системы типов и про другие фишки MessagePack.
  • Пара постов по использованию инструмента Rector: Как использовать фреймворки требующие php>=8.1 на более старых версиях php, и Как преобразовать аннотации в атрибуты.


Аудио/Видео


  • video Roadrunner — что дальше? — Запись митапа с R&D командой SpiralScout про дальнейшие планы RoadRunner, а также про актуальные фичи.
  • video Топ 10 трюков в PhpStorm от Christoph Rumpel.
  • video PHP Release Radar — Episode 12: Про CaptainHook — менеджер Git-хуков.



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

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


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

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 213

Источник: https://habr.com/ru/post/585326/


Интересные статьи

Интересные статьи

Компания «Деловой разговор» — Титановый партнер 3СХ — осуществила расширенную интеграцию IP-АТС 3CX с Битрикс 24. Ранее уже существовали отдельные модули, решающие конкретные задачи, напр...
В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU. Дано Корпоративн...
В последнее время на Хабре не так много материалов про Deno, хотя runtime активно развивается и продолжает еженедельно релизиться. В связи с этим предлагаю вам ознак...
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 4, инициатива по консолидации PHP-сообщества, концепт PHP для GraalVM, предложение по дженерикам в Interna...
Принято считать, что персонализация в интернете это магия, которая создается сотнями серверов на основе БигДата и сложного семантического анализа контента.