Сентябрь 2024

Сентябрь 2024

Подборка свежих новостей, инструментов, видео и материалов из мира PHP.

Приятного чтения!

Новости

Первые альфа-версии PHP 8.4 доступны для тестирования

Вышли первые две альфа-версии, дающие начало выпуска PHP 8.4. Обновления будут выходить каждые две недели по определённому графику, а финальный выпуск ожидается 21 ноября.

Заморозка функций ожидается 13 августа, а это значит, что некоторые изменения еще могут попасть в выпуск. На данный момент наиболее заметными являются следующие изменения:

Напоминаю, что, с этого года сократился предрелизный цикл, вместо 6 релиз-кандидат версий, теперь будет 4, а каждая версия теперь поддерживается на год дольше.

Поздравляю Кельвина, Саки и Эрика!

Вышли PHP 8.2.23 и PHP 8.3.11

Выпуски с исправлениями ошибок вышли по расписанию.

The State of Laravel Survey 2024

Tobias Petry запустил ежегодный опрос о состоянии сообщества Laravel. На сайте также доступны прошлогодние результаты опроса.

State of Generics and Collections

Arnaud Le Blanc, Derick Rethans и Larry Garfield рассказали о текущем состоянии дженериков в PHP. Вы можете принять участие в обсуждении в списке рассылок и на Reddit.

Вышел PhpStorm 2024.2

В этой версии вас ждет поддержка лог-файлов, редактирование из плавающей панели инструментов, автодополнение в новом терминале, улучшенное автодополнение строки целиком и многое другое.

С полным списком изменений можно ознакомиться на сайте JetBrains.

PHP Core

Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:

RFC: Static class

RFC не набрал необходимый процент голосов и был отклонён.

RFC: Lazy Objects

В PHP 8.4 появятся ленивые объекты. Эти объекты будут инициализироваться и потреблять ресурсы только при чтении или изменении свойства.

Хотя ленивые объекты не будут использоваться непосредственно большинством пользователей, они предназначены в первую очередь для авторов библиотек и фреймворков, позволяя им удалить большое количество шаблонного кода.

📣 RFC: Improve language coherence for the behaviour of offsets and containers

PHP поддерживает доступ к элементам контейнера смещением с помощью скобок [] со следующей нотацией $container[$offset]. Однако поведение таких обращений зависит не только от типа контейнера и смещения, но и от операции, которая выполняется при обращении к смещению. Существующее поведение крайне непоследовательно и трудно предсказуемо.

Gina Peter Banyard предлагает улучшить согласованность языка для смещений и контейнеров.

RFC: Add bcdivmod to BCMath

В настоящее время в PHP есть функция bcdiv() для деления чисел произвольной точности и функция bcmod() для получения остатка после деления.

В PHP 8.4 появится новая функция bcdivmod(), которая позволит получить частное и остаток за одну операцию в виде массива.

RFC: Property hook improvements

После внедрения хуков свойств, Ilija Tovilo и Larry Garfield нашли способ реорганизовать логику, чтобы увеличить производительность.

RFC прошел стадию голосования и мы получим улучшения хуков уже в PHP 8.4.

RFC: Asymmetric Visibility v2

Со второй попытки RFC был принят. Синтаксис, подобный Swift, позволяющий свойствам иметь отдельную («асимметричную») видимость для операций чтения и записи появится в PHP 8.4.

📣 RFC: Function Autoloading v4

Используя автозагрузчики (например, composer), пользователи уже могут быстро освоиться с классами, но в настоящее время в языке нет возможности сделать то же самое с функциями.

Robert Landers предложил добавить возможность автозагрузки функций.

📣 RFC: Should PHP have a directive that makes the parser treat all namespaced function calls as global?

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

Nick Lockheart призывает обсудить вопрос о том, должна ли в PHP быть директива, которая заставляет парсер рассматривать все вызовы функций из пространства имен как глобальные.

📣 RFC: Default expression

Единственный способ передать значение по умолчанию параметру функции или метода – не передавать ничего. Paul Morris предлагает ввести выражение default в контекстах передачи аргументов, чтобы использовать значение по умолчанию функции или метода.

1function greetingEveryone($greeting = 'Hello', $subject = 'World') {
2 return sprintf('%s, %s!', $greeting, $subject);
3}
4 
5var_dump(greetingEveryone(default, 'Earth')); // Hello, Earth!

Инструменты

  • arokettu/composer-license-manager – Плагин для Composer, позволяющий задавать лицензионную политику, например, список разрешённых лицензий для проекта и избегать проприетарных пакетов, пакетов с недопустимыми лицензиями или вообще без лицензии.

  • composer/pcre – Библиотека-обертка PCRE, предлагающая безопасные для типов замены preg_*.

  • Sammyjo20/ssh-php – До смешного простая отправная точка для создания приложений PHP SSH.

  • ServBay – Локальная среда разработки, альтернатива Laravel Herd.

  • HiEventsDev/Hi.Events – Платформа для управления мероприятиями и продажи билетов с открытым исходным кодом.

  • freescout-help-desk/freescout – Бесплатная служба поддержки на собственном хостинге и общий почтовый ящик ( альтернатива Zendesk / Help Scout).

  • savinmikhail/Comments-Density – Анализ плотности и качества комментариев в PHP-файлах для поддержания и улучшения качества документации по коду.

  • prasathmani/tinyfilemanager – Однофайловый файловый менеджер PHP, браузер и управление файлами.

  • TicketSwap/phpstan-error-formatter – Минималистичный форматер ошибок для PHPStan.

Symfony

Laravel

Статьи

Видео

События

Сергей Пантелеев
Релиз-менеджер PHP 8.2
Роман Пронский
Администратор PHP Foundation
Краткий дайджест в нашем Telegram
Ещё больше новостей в блоге компании JetBrains
PHP-дайджест в видео формате на канале CutCode
Рассылка PHP-дайджестов
Подпишитесь на рассылку, чтобы не пропустить новый выпуск

Нажимая «Подписаться» я даю согласие на обработку персональных данных.

Мы заботимся о ваших данных и не будем злоупотреблять доверием.