Как стать автором
Обновить

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

Время на прочтение5 мин
Количество просмотров12K
Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира 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:

  • Классный видеоролик — 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




Laravel




Yii




Статьи




Аудио/Видео





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

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


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

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

Теги:
Хабы:
+44
Комментарии10

Публикации

Изменить настройки темы

Истории

Работа

PHP программист
155 вакансий

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн