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