Всем привет! Краткий обзор новостей из мира PHP и Laravel за октябрь 2023 г.
PHP Дайджест
Вышли PHP 8.1.25 и PHP 8.2.12
В этих выпусках несколько исправлений ошибок и улучшений в модулях Core, CLI, CType, DOM, Fileinfo, Filter, Hash, Intl, MySQLnd, Opcache, PCRE, SimpleXML, Streams, XML и XSL.
Вышел пятый релиз кандидат PHP 8.3.0
Очередной релиз-кандидат вышел в соответствии с графиком. Шестой RC ожидается 9 ноября и станет последним перед финальным релизом PHP 8.3.
Подробный список того, что появится в PHP 8.3, можно найти на сайтах php.watch или stitcher.io.
SjonHortensius/phpshell стал публичным
Репозиторий phpshell, на базе которого работает сайт 3v4l.org стал общедоступен.
18 октября 2005 года был сделан первый публичный коммит проекта Symfony.
Открыта программа раннего доступа PhpStorm 2023.2
В первой версии EAP улучшена поддержка PHP 8.3, добавлен мастер создания новых проектов для Symfony и поддержку преобразования аннотаций Doctrine в атрибуты.
Ядро PHP
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
????RFC: Rounding Integers as int
На данный момент функции округления round, ceil и floor возвращают число с плавающей точкой, но при использовании целых чисел выше 2^53 получаются неожиданные результаты из-за потери точности. Marc Bennewitz предлагает выполнять округление для заданного целого числа и возвращать полученное целое число, если это возможно.
????RFC: Unbundle ext/imap, ext/pspell, ext/oci8, and ext/PDO_OCI
Derick Rethans предлагает удалить модули из ядра PHP и перенести в репозиторий PECL.
????RFC: Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim
Yuya Hamada предлагает добавить многобайтовую поддержку для функций обрезки.
????RFC: RFC1867 for non-POST HTTP
RFC1867 определяет тип контента multipart/form-data. PHP поддерживает анализ этого типа контента, но только для POST-запросов. Если осуществляется POST-запрос и тип содержимого multipart/form-data, тело запроса немедленно обрабатывается перед запуском PHP-скрипта и заполняется в суперглобальные переменные $_POST и $_FILES. Эта функция запускается автоматически и не предоставляется непосредственно пользователю.
Ilija Tovilo предлагает добавить новую функцию request_parse_body(), чтобы вывести существующую функциональность на пользовательский уровень и использовать ее для других HTTP-методов.
????RFC: Change the edge case of round()
Saki Takamachi предлагает изменить поведение функции round в крайних случаях и перестать ожидать от чисел с плавающей точкой десятичного поведения и начать ожидать, что числа с плавающей точкой будут вести себя как числа с плавающей точкой.
✅RFC: Increasing the default BCrypt cost
RFC о котором мы говорили в прошлом выпуске принят единогласно. Большинством голосов было принято, что в PHP 8.4 значение cost по умолчанию будет увеличено до 12.
✅RFC: A new JIT implementation based on IR Framework
Ещё один RFC из прошлого выпуска также принят единогласно в обоих голосованиях: в PHP 8.4 появится новая реализация JIT, тем временем старая реализация будет удалена.
Laravel дайджест
Laravel дайджест
Обновления Laravel
В этом месяце вышло три релиза (10.26 - 10.28). Они большие, но в основном это фиксы - где-то что-то поправили - в док-блоках, в аннотациях и добавили тесты. В Git workflow обновили Git auto-commit action с четвертой на пятую версию.
10.26. Vendor::Publish prompt
Взглянем на поиск в команде vender::publish. Бывает, что в огромном списке нужно выбрать определённую цифру и указать, что именно из vendor service provider необходимо опубликовать. Теперь есть vendor publish с новым Laravel Prompt, где появился поиск. Теперь быстро можно найти что нам требуется и сразу опубликовать все необходимые файлы от vendor service provider. С таким поиском передавать опцию с namespace провайдера больше не надо.
10.26. Route::List -vv option
Прокачали artisan команду Route::list. Появилась опция -vv, которая выведет развёрнутую информацию по применённым к роутам мидлварам.
Вышел проект по Artisan-командам в Laravel. На нём собраны все Artisan команды и все возможные опции и аргументы которые у них есть. Многих из них нет в официальной документации, а на этом сайте есть! Реализована удобная навигация. Для тех, кто любит быстро и удобно что-то генерировать в одну команду.