PHP Digest
8.53K subscribers
60 photos
3 videos
287 links
PHP Дайджест

Новости, материалы и инструменты из мира PHP — раз в месяц.

Вопросы, замечания, предложения: @pronskiy
Download Telegram
Fibers — асинхронному PHP быть?

https://wiki.php.net/rfc/fibers

Мейнтенер Amphp опубликовал RFC по файберам и обновленное расширение с реализацией amphp/ext-fiber.

Проблема асинхронного кода в текущем виде с ReactPHP и Amp в том, что весь код должен быть асинхронным: либо нужно прокидывать yield либо Promise по всей цепочке вызовов.

Файберы решают эту проблему. Это как генераторы, то есть можно прерывать выполнение функций, но файберы не загрязняют стек вызовов и не надо добавлять yield на каждом уровне.

Можно представить файбер как функцию, которая сама хранит в себе стек вызовов и которую можно остановить или продолжить в любой момент.

Предлагается добавить класс Fiber и интерфейс FiberScheduler. Последний это, по сути, ивент луп. Его реализация в PHP 8.1 не предлагается и остается в планах на будущее.

То есть глобально это пока не меняет картину асинхронного PHP: стандартная библиотека все равно блокирующая.

Зато появится официальный стандарт ивент лупа, а разработчики пакетов типа ReactPHP и Amp смогут писать асинхронные обертки проще и быстрее. И использовать их будет приятнее. В общем, хороший первый шаг в направлении.

Примеры тут: https://github.com/amphp/ext-fiber/tree/master/examples

Вероятность принятия: высокая.

______
Спасибо
https://github.com/mmasiukevich за ревью текста.
Стрим: Трейты в PHP — зло? Валентин Удальцов против всех

https://www.youtube.com/watch?v=DEk56xbMITo

В эту среду наконец-то проясним, что не так с трейтами и можно ли использовать их правильно. Валентин ярый противник трейтов, и ему будут противостоять Кирилл Несмеянов, Сергей Жук, Иван Лещёв и Александр Дубовской.

Подробнее: https://habr.com/ru/company/skyeng/blog/534152/
PHP Digest
Стрим: Трейты в PHP — зло? Валентин Удальцов против всех https://www.youtube.com/watch?v=DEk56xbMITo В эту среду наконец-то проясним, что не так с трейтами и можно ли использовать их правильно. Валентин ярый противник трейтов, и ему будут противостоять Кирилл…
Интересный факт из RFC трейтов

Трейты появились в PHP 5.4 в 2012 году. В то время в качестве альтернативы рассматривались "графты" (от англ. grafting — прививка деревьев).

https://wiki.php.net/rfc/horizontalreuse

В отличие от трейтов, графты — это полноценные классы. То есть можно было бы взять один класс и полностью внедрить в другой, при этом сохранив инкапсуляцию. Такая вот композиция на уровне языка могла быть.
This media is not supported in your browser
VIEW IN TELEGRAM
PHP-Дайджест № 195

Fibers для асинхронного PHP, первые нативные атрибуты, короткий match и другие RFC предложения для PHP 8.1, инструменты, много видео, статьи, подкасты, cтрим PHP Дайджест Live.

https://habr.com/ru/post/535308/
Итоги 2020 в PHP сообществе

Вместо подведения итогов в дайджесте, в этом году решили сделать опрос, чтобы вспомнить, что интересного было:
https://skyeng-school.typeform.com/to/iNfIjQbr

Выбираем фреймворк года, персону года, чат года и многое другое года. Результаты будут на Хабре и на phpcommunity.ru.

Картинка: https://vas3k.ru/blog/2020/
PHP Дайджест № 196

PHP 8.0.1, MySQL движок на PHP от Vimeo и другие релизы, обновленный Enum и свежие предложения для PHP 8.1, «уязвимость» в Laminas, инструменты, статьи, видео, PHP Дайджест Live в 20:00 МСК.

https://habr.com/ru/post/536726/
Forwarded from Пых (Валентин Удальцов)
🤹

Решили с Ромой запустить юморной канал про PHP. Посмотрим, что из этого получится. Подписывайтесь, присылайте мемы и шутки 🤗

@isPHPdying
PHP Дайджест № 197

Объекты в качестве ключей массивов и другие RFC предложения для PHP 8.1, запуск WebAssembly в PHP, о коллизиях в массивах, об обновлении на PHP 8.0, порция полезных инструментов, статьи, видео, PHP Дайджест Live в 20:00 МСК.

https://habr.com/ru/post/539034/
Голосование по енамам в PHP

https://wiki.php.net/rfc/enumerations#voting

Подробнее про предложение можно прочитать в дайджесте № 194. А пока давайте проведем свое альтернативное голосование.
Поддерживаете ли добавление енамов в PHP 8.1 в текущем виде?
Anonymous Poll
83%
Да
17%
Нет
PHP Дайджест № 198

Обновление стандартов PSR-6 и PSR-13, кеширование наследования в опкеш, аксессоры свойств и другие новости из PHP Internals, диалект Lisp компилируемый в PHP, а также инструменты, видео, подкасты и PHP Дайджест Live.

https://habr.com/ru/post/541300/
Вебшелл скрывался в зараженном PHP-скрипте в виде пробельных символов

https://habr.com/ru/company/vdsina/blog/542012/

Анализ бекдора, найденного на взломанном сервере.

———
Перевод подготовлен в рамках коллаборации с компанией VDSina.ru. Если зайдет, то они будут делать больше переводов по моей наводке, что особенно полезно для новичков.
Большой стрим по PHP, 27 февраля, суббота

https://habr.com/ru/company/skyeng/blog/542070/

Подводим итоги опроса вместе с кучей ребят из сообщества:
Дмитрий Елисеев (ElisDN)
Петр Мязин (Пятиминутка PHP)
Роман Пронский (PHP Даджест)
Валентин Удальцов (Пых)
Александр Макаров (Yii)
Антон Околелов (Цинковый Прод)
Николай Пучко (PHP Today)
Константин Буркалёв (SDCast)
Сергей Жук (Между скобок)
Антон Титов (SpiralScout)
и спешл гест стар Никита Попов!

В программе доклады от Антона Жукова (ManyChat) и Ильи Левина (Skyeng), обсуждения, розыгрыши призов.

.
Как защититься от Dependency Confusion в PHP

На прошлой неделе была нашумевшая статья, в которой автор рассказал, как использовал npm (Javascript), pip (Python) и gem (Ruby), чтобы заставить компании установить и запустить в своей инфраструктуре зловредный код.

Авторы Composer, Джорди и Нильс, написали о том, как защититься от подобного:

https://habr.com/ru/company/vdsina/blog/542598/

Также есть утилитка https://github.com/visma-prodsec/confused, которая проверяет безопасны ли имена внутренних пакетов или любой желающий может зарегистрировать их.