В последнюю субботу февраля нас ждет обзор главных событий и явлений в мире PHP в 2020-м и 2021-м, пара докладов и розыгрыш притяных и полезных мелочей для разработчика.
Книга о разработке расширений под CMS Joomla 5

Появилась новая книга для разработчиков, помогающая в изучении новой версии Joomla 5 и дающая представление о том, как создавать свои расширения под данную платформу согласно новой структуре Joomla!
Стрим PHP 8.4: крутые спикеры и немного оверрана

Друзья, вчера был крутой стрим по PHP 8.4! 🔥 Целых 250 человек в пике (абсолютный рекорд канала), огненные обсуждения в чате, придумали Valentine-style форматирования кода (PSR-V), а ещё нас неожиданно порадовал своим появлением Елисеев! 😎 Разобрали все фишки новой версии, пошутили от души, и хоть стрим затянулся дольше обычного - оно того стоило. Запись доступна по ссылке, давайте определим лучший доклад и поделимся впечатлениями в комментах! ✌️
Как ManyChat на PHP8 переезжал

Привет, меня зовут Максим, я бэкенд-разработчик в ManyChat.
Эта статья – о нашем переходе на PHP8. Однажды мы решили немного поисследовать – посмотреть, чего нам будет стоить возможный переход на новую версию, и запланировать эти работы на следующий год, сразу на 8.1. Перспектива переезда тогда вызывала у нас чувства примерно как на КДПВ: от мыслей обо всех тестах и внешних зависимостях было немного неуютно.
Однако в процессе исследования выяснилось, что нельзя просто так взять и остановиться. Одно за другим, и вот мы уже полностью на PHP 8.
Эта статья – о шагах, из которых складывался переезд, и проблемах, которые мы встретили в процессе. Надеюсь, статья будет полезна для тех, кому ещё только предстоить перейти на PHP 8 – поможет подготовиться хотя бы морально. Для всех остальных (кто уже на PHP 8 или не собирается) – давайте сверимся по ощущениям.
Сравнение php-fpm, nginx-unit и laravel-octane

Сравнение производительности php-fpm, nginx-unit и laravel-octane - что выбрать для разработки микросервисов.
Дмитрий Стогов о своём пути и PHP

Дмитрий Стогов из Zend by Perforce уже много лет занимается самым сердцем PHP и знает про него много полезного. В том числе о вопросах, связанных с производительностью.
В своем докладе на конференции PHP Russia 2021 Дмитрий расскажет, как продвигается работа над JIT и какие другие идеи, направленные на повышение производительности, были реализованы в PHP 8.0 и готовятся в PHP 8.1. А уже сегодня можно почитать интервью, в котором я задал эксперту PHP вопросы обо всем понемногу: от его истории до обсуждения современных реалий.
Написание парсера DBML на PHP

Иногда возникает задача парсинга произвольного DSL для дальнейшей работы с ним на уровне PHP кода. И я хочу поделиться опытом решения этой приблемы с помощью регулярок с примерами.
Слабые места PHP: думай как хакер

Какие уязвимости можно найти в типичном PHP-проекте? Удивительно, но любые — от слабых мест и уязвимостей в коде никто не застрахован. Чем быстрее мы их найдем, тем меньше риск для компании. Но чем лучше будем понимать, как можно атаковать наше приложение и как взаимодействуют друг с другом наши фичи, тем легче будет защитить код еще на уровне разработки. Тем более, что в PHP есть свои специфичные уязвимости — те же type juggling, insecure deserialization и local file include.
Чтобы повысить уровень безопасности кода, полезно думать как хакер и тестировщик одновременно, проверяя все возможные лазейки в коде. Сканеры уязвимостей, SSL-сертификаты, аудиты и прочие многочисленные инструменты защиты будут хорошим дополнением. О том, как всё это совместить, Антон Прохоров рассказал в нашем интервью. На конференции PHP Russia 2021 Антон представит в докладе уязвимости PHP-приложений и способы их эксплуатации.
PHP — какая ниша у языка и поможет ли PHP8 решить насущные проблемы (спойлер: имхо нет)
class Number {
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
В одном из выпусков подкаста "Цинковый прод" мы мельком обсуждали, что нового будет в языке PHP8. После записи я решил написать статью, чтобы сформулировать свои мысли по положению PHP в современной разработке.
Давайте определимся в целом, какую нишу занимал/занимает язык, и куда он движется
Изначально язык позиционировался как простой инструмент, в котором из коробки есть всё необходимое для web.
С одной стороны, это действительно так: без дополнительных библиотек можно, например, вытащить из суперглобальной переменной $_POST параметры POST-запроса и вставить их в mysql с помощью встроенных функций, и это вроде как здорово.
Также очень важно, что модель "рожден, чтобы умереть" (например, в php-fpm) упрощала и упрощает разработку до безумия: не нужно знать, что такое локи, дедлоки, утечки памяти и т.д. Не надо писать await перед каждой строкой кода и т.д.
Скрипт начал работать над входящим HTTP-запросом, поработал в отдельном процессе, ни с кем не общаясь, и сдох, очистив все после себя. Очень просто программировать. Порог входа — около нуля.
Опять же, можно обойтись без роутинга: имя файла — это уже описание роутов.
С другой стороны, увы, есть нюансы. Веб не стал ждать и ушел далеко вперед.
PHP 8 в восьми кусочках кода
Disclaimer: ссылка на эту статью на английском языке уже была в посте последнего PHP дайджеста. Если владеете языком достаточно, возможно, стоит перейти к оригиналу, там очень много сносок на другие англоязычные статьи.
Понимаем JIT в PHP 8

TL;DR
Компилятор Just In Time в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в рантайме.
Это означает, что с JIT некоторые операционные коды не должны интерпретироваться Zend VM, такие инструкции будут выполняться непосредственно как инструкции уровня процессора.
Мне не нравится то, во что превращается PHP

И я уже знаю, что скажете вы, глядя на заголовок статьи:
— Кто ты такой? Почему ты позволяешь себе так говорить?
Отвечу сразу, чтобы не было недомолвок:
- Я профессионально программирую на PHP с 2004 года, то есть вот уже 16 лет на момент написания этой статьи, и продолжаю это делать каждый день
- Я преподаю программирование, в том числе и на PHP, примерно 10 лет и за это время выпустил в свет несколько тысяч студентов
- Я всегда был в восторге от каждой новой версии PHP, что выходила со времен от 5.0 до 7.4 и всегда был адептом подхода «пишем на самой свежей версии, тестируем на следующей»
И всё-таки, несмотря на всё сказанное выше, мне не нравится то, во что превращается PHP сейчас и во что он превратится уже скоро, буквально этой осенью.
Почти каждый принятый в PHP 8 RFC вызывает во мне боль и недоумение. И я готов объяснить и защитить свою позицию.
29 ноября в Москве конференция PHP Russia будет офлайн
Александр Макаров расскажет о предстоящих активностях на конференции, о некоторых интерактивах и других нюансах. Александр — эксперт в PHP, лидер фреймворка Yii, соавтор Yii 2 и представитель Yii в PHP-FIG. Кроме разработки фреймворка успел поработать в разных компаниях, таких как Skyeng, Wrike и Stay.com и перепробовать в бою целые поколения разных технологий.
Мы расспросили Александра как главу программного комитета по PHP Russia 2020 обо всех активностях и интересностях встречи.

PHP 8 — Что нового?
PHP, начиная с 7 версии, кардинально изменился. Код стал куда быстрее и надёжнее, и писать его стало намного приятнее. Но вот, уже релиз 8 версии! Ноябрь 26, 2020 — примерно на год раньше, чем обещали сами разработчики. И всё же, не смотря на это, мажорная версия получилась особенно удачной. В этой статье я попытаюсь выложить основные приятные изменения, которые мы должны знать.
1. JIT
Как говорят сами разработчики, они выжали максимум производительности в 7 версии (тем самым сделав PHP наиболее шустрым среди динамических ЯПов). Для дальнейшего ускорения, без JIT-компилятора не обойтись. Справедливости ради, стоит сказать, что для веб-приложений использование JIT не сильно улучшает скорость обработки запросов (в некоторых случаях скорость будет даже меньше, чем без него). А вот, где нужно выполнять много математических операций — там прирост скорости очень даже значительный. Например, теперь можно делать такие безумные вещи, как ИИ на PHP.
Включить JIT можно в настройках opcache
в файле php.ini
.
Подробнее 1 | Подробнее 2 | Подробнее 3
2. Аннотации/Атрибуты (Attributes)
Все мы помним, как раньше на Symfony код писался на языке комментариев. Очень радует, что такое теперь прекратится, и можно будет использовать подсказки любимой IDE, функция "Find usages", и даже рефакторинг!
Забавно, что символ #
также можно было использовать для создания комментариев. Так что ничего не меняется в этом мире.
PHP 8 продолжает развитие опенсорсного языка программирования

Первое за последние годы крупное обновление широко распространенного языка веб-программирования PHP принесло нам новые фичи, которые могут помочь еще больше увеличить его распространенность и востребованность.
На заре эпохи интернета опенсорсный язык программирования PHP был в самом центре всей веб-разработки. Его новый релиз 8.0 стремиться сделать его более актуальным для нового поколения разработчиков.
Увидевший свет 25 лет назад, PHP представляет букву «P» в стеке LAMP (Linux, Apache, MySQL, PHP), который определил первое поколение веб-разработки. В последние годы другие языки, включая Python и JavaScript, начали превосходить PHP в популярности, в то время как новые языки, такие как Go и Rust, также очень быстро развиваются.
Однако PHP не сидит сложа руки, пока другие языки развиваются. PHP 8.0, который стал широко доступен в День благодарения (26 ноября), объединяет в себя ряд новых возможностей, в том числе механизм JIT-компиляции, который повышает производительность по сравнению с предыдущими версиями PHP.
Другие улучшения включают оптимизации языка, которые несомненно принесут пользу разработчикам, включая именованные аргументы и атрибуты.
Новое в Symfony 5.2: атрибуты PHP 8

В PHP 8 были добавлены новые интересные фичи, такие как типы объединения, match-выражения и constructor property promotion. Однако наиболее востребованной новой фичей являются встроенные атрибуты (также называемые аннотациями).
Symfony 5.2 будет включать поддержку атрибутов PHP 8 для определения роутов и необходимых зависимостей. Если вы уже используете аннотации, переход будет бесшовным.
Зеев Сураски: Будущее Zend Engine и Zend Framework

В июне 2015 года было анонсировано поглощение Zend, компании-разработчика ядра языка PHP, американской компанией Rogue Wave Software. В феврале 2016 года об уходе из Zend заявил ее сооснователь и до 2015 исполнительный директор Энди Гутманс.
На этот раз второй из основателей Zend Technologies Зеев Сураски в своем блоге поделился планами.
PHP GR8: повысит ли JIT производительность PHP 8

PHP — один из основных языков разработки в Badoo. В наших дата-центрах тысячи процессорных ядер заняты выполнением миллионов строк кода на PHP. Мы внимательно следим за новинками и активно ищем пути улучшения производительности, так как на наших объёмах даже небольшая оптимизация приводит к существенной экономии ресурсов. Одна из главных новостей в области производительности PHP — появление JIT в восьмой версии языка. Это, безусловно, не могло остаться без нашего внимания, и мы перевели статью о том, что есть JIT, как он будет реализован в PHP, зачем его решили делать и что от него ждать.
Если вы не вышли из пещеры или не прибыли из прошлого (в этом случае добро пожаловать), то уже знаете, что в PHP 8 будет JIT: на днях тихо-мирно завершилось голосование, и подавляющее большинство участников высказались за внедрение, так что всё решено.
Можно в порыве радости даже изобразить несколько безумных движений как на фото (это, к слову, называется «детройтский JIT»: