Фото: Иван Ганцев.
Подборка свежих новостей и материалов из мира 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
- В symfony/console добавили автодополнение команд в терминале из коробки. Все пакеты на основе symfony/console автоматически тоже получают автодополнение.
- История нового дизайна документации Symfony — symfony.com/doc.
- Неделя Symfony #773 (18-24 Октября 2021)
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, и Как преобразовать аннотации в атрибуты.
Аудио/Видео
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, поставьте, пожалуйста, ему плюс.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 213
В эпоху перемен игроки туротрасли вынуждены трансформироваться, искать новые ниши и возможности. Отель — уже не просто место для ночевки, экскурсия — не просто рассказ, а совершить путешествие можно, не выходя из офиса
Отель как театр
Основательница проекта «Заблудшие» Юлия Максимович превращает отели в театры для любителей архитектуры и истории. По словам Юлии, в период пандемии отели стали искать альтернативные источники дохода, перепрофилируясь под другие категории гостей, или, например, превращаясь в коворкинги. Еще одним способом трансформации для отелей стал театр. Организаторы проекта проводят спектакли-экскурсии и квартирники в гостиницах с богатой историей, погружая гостей в атмосферу места и знакомя с судьбой знаменитых постояльцев.
«Уникальность проекта в том, что мы проводим программы в действующих и востребованных отелях так, что это не мешает постояльцам. При этом и наша аудитория чувствует себя желанными гостями», — рассказала основательница проекта.
По ее словам, идея проекта родилась 2,5 года назад, еще до пандемии. Первой локацией стала Hilton Moscow Ленинградская. «В период ограничений перспективы были непонятны: загрузки не было, гостей не предвиделось, ограничения заморозили всю деятельность. Но мы не сдавались. Всю пандемию я училась сразу в трех местах для прокачивания нашей digital, коммуникационной и sales-стратегий. Когда сняли ограничения, мы робко поставили в план два показа в месяц, а провели восемь. Сейчас в среднем проводим 45–50 в месяц», — поделилась Максимович. В свою очередь, для отелей, в которых проходят спектакли, это одновременно и PR-кейс, и дополнительная выручка.
Отель как часть общества
Отели активно вливаются не только в культурную, но и в общественную жизнь городов. Например, сеть отелей «Азимут» уже больше трех лет сотрудничает с поисково-спасательным отрядом «Лиза Алерт». Сеть предоставляет отряду конференц-залы для мероприятий — обучения волонтеров, игровых занятий с детьми и так далее. «Для нас очень важно помогать людям, которые активно участвуют в жизни других людей», — говорит коммерческий директор отелей «Азимут» Ирина Ривкина.
По ее словам, у отелей есть множество вариантов принять участие в жизни города в зависимости от желания владельцев. Это может быть и благотворительность, и социальные или экологические проекты.
Из конференц-зала — в Венецию
Развитие технологий позволяет игрокам туристической отрасли создавать абсолютно новые продукты. Например, компания VOZDUKH Airlines предлагает услуги «виртуальных авиалиний»: она предлагает компаниям виртуальные путешествия как инструмент для корпоративного обучения и сплочения команды. Путешествие начинается с полета — «командир воздушного судна» ведет трансляцию из кабины настоящего самолета. «На месте» эстафету перехватывает гид, а далее программа зависит от целей и задач участников.
«Например, компания-клиент обучает сотрудников открытости новому: проводит тренинги, дает упражнения. А мы формируем для сотрудников личное переживание, связанное с тренингом по этой теме», — говорит гендиректор компании Егор Уткин. — «Во время нашего «путешествия» в Венецию, например, с туристами в прямом эфире пообщалась жительница, которая рассказала им о трех проблемах города и попросила решить эти проблемы по-новому», — поделился Уткин.
Виртуальные технологии в целом отлично работают на стыке отраслей, отмечает Уткин. По его прогнозам, виртуальный туризм будет набирать обороты: во-первых, потому что технологии развиваются, и качество картинки растет. Во-вторых, поскольку в эту сферу активно вкладываются такие гиганты как Amazon: в их проектах виртуальные путешественники могут уже не только выбрать локацию, но и вид активности — от готовки до персонального шоппинга. И, в-третьих, за счет того, что виртуальный туризм расширяет возможности классического. Он позволяет туристу посетить места, до которых он бы не добрался, и пообщаться с людьми, с которыми вряд ли бы познакомился. «Например, в Венеции мы заходим в гости к аристократам, которые показывают нам различные артефакты: от балок двенадцатого века до амфор со дна канала», — рассказывает Уткин.
В погоне за уникальным переживанием
Трансформируются и классические экскурсионные форматы: каждая компания и каждый проект ищет для себя новую уникальную нишу. Например, проект «Москва глазами инженера» рассказывает об архитектуре изнутри — скажем, показывает, как появление новых видов строительных материалов определяло стиль зданий той или иной эпохи. «Мы не пересекаемся с традиционными экскурсионными бюро, у нас есть свой стиль, формат, свой способ повествования, своя аудитория», — говорит исполнительный директор проекта Анастасия Новоселова.
Главное, что нужно туристу, по ее словам — это новый опыт и новые переживания. Чтобы сделать эти переживания уникальными, проект дает туристам возможность встретиться с инсайдерами — людьми, напрямую связанными с местом. «Например, в Калуге экскурсию по швейной мануфактуре Bosco ведет ее исполнительный директор Виталий Варакин, а на первую экскурсию приезжал из Петербурга Степан Липгард — архитектор бюро, которое построило эту фабрику. В Калуге же есть арт-парк Никола-Ленивец, и его создатель, художник Николай Полисский, также выходит к нашей аудитории пообщаться», — рассказала Новоселова.
Скорость и гибкость
Классические туры тоже не стоят на месте, пусть перемены и не такие резкие. Здесь изменения проявляются в том, что пандемия научила туроператоров быстрее реагировать на изменения запросов клиентов. Например, замгендиректора компании TUI Александр Сирченко отмечает, что операторам пришлось учиться работать с короткими сроками бронирования — если раньше люди планировали поездку за полгода, то в пандемию решения принимаются практически в последние дни.
Сами туры тоже стали короче, особенно в период, когда условия карантина в регионах то и дело меняются. Стало больше онлайн-бронирований и повысились требования туристов к безопасности.
Операторы теперь все больше анализируют путь клиента и формируют турпродукты, которые отвечают потребностям разных групп туристов — вместо того, чтобы предлагать всем один и тот же продукт. «Одна концепция отдыха разрабатывается для семей с детьми, другая для молодежи, третья — для людей зрелого возраста», — говорит Сирченко. — «На простейшем бытовом уровне это выглядит, например, так: молодежи в гостинице нужен отличный кофе, а семье — кроватка напрокат».
Такой более персонализированный подход применяют не только туроператоры: представители разных секторов турбизнеса понимают, как важно четко таргетировать аудиторию. Московский турбизнес объединяется на коммуникационной площадке Moscow Travel Hub Комитета по туризму города Москвы, где проводятся регулярные мероприятия, посвященные развитию сфер гостеприимства и сервиса, создаются коллаборации и совместно разрабатываются новые продукты.