Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
PHP 8.3 – большое обновление языка. Оно содержит множество новых возможностей, таких как явная типизация констант классов, глубокое клонирование readonly-свойств, а также улучшения класса Randomizer. Как всегда, в нём также улучшена производительность, исправлены ошибки и многое другое.
Подробный список нововведений в PHP 8.3 можно найти на странице релиза, в руководстве по обновлению, а также узнать немного больше о релизе из анонса PHP Foundation.
Windows: Скомпилированные двоичные файлы доступны на сайте windows.php.net.
Ubuntu/Debian: PHP 8.3 доступен на ondrej/php PPA.
Fedora/RHEL/CentOS/Alma/Rocky: Доступен в виде коллекции программ php83 в репозитории Remi.
macOS: PHP 8.3 можно установить с помощью Homebrew совместно с shivammathur/homebrew-php.
Docker: Образы PHP 8.3 доступны на Docker Hub с тегами 8.3*.
PHP 8.0.30 стал последним выпуском PHP 8.0. Ветка больше не будет получать официальных обновлений безопасности.
Выпуски PHP 8.1.26 и PHP 8.2.13 с исправлениями ошибок вышли по расписанию.
Ветка PHP 8.1 получит ещё один выпуск – PHP 8.1.27, который станет последним выпуском с исправлением ошибок, далее будут выходить только выпуски с исправлением ошибок безопасности.
Фонд PHP Foundation был основан два года назад.
За прошедший год PHP Foundation поддержал работу 6 основных разработчиков и внёс значительный вклад в развитие языка PHP.
Ознакомьтесь с отчётом PHP Foundation за ноябрь 2023.
Поддержать PHP Foundation можно с помощью OpenCollective или GitHub Sponsors.
Опубликованы результаты ежегодного исследования JetBrains, в котором приняли участие 26 348 разработчиков со всего мира.
Три самые популярные функции, которые ждут в PHP – Типизированные массивы, тестирование производительности и дженерики.
Напишите в комментариях, какие функции хотели бы вы добавить в PHP.
Большинство новостей ядра PHP подробно освещаются в серии PHP Core Roundup от PHP Foundation, мы лишь быстро по ним пробежимся:
Ресурсы – устаревшая структура данных, которая уже давно вытеснена объектами. Работа над заменой ресурсов на объекты началась еще в 2013 году, но большинство модулей перешли на неё только в PHP 8.0.
Máté Kocsis предлагает осуществить миграцию в оставшихся модулях и определить политику для дальнейшего развития.
Срок жизни версии PHP составляет 3 года. Многие считают, что это мало, а предрелизный период, составляющий полгода, наоборот, слишком много.
Jakub Zelenka, один из релиз-менеджеров PHP 8.3, предлагает увеличить срок жизни версии PHP до 4 лет (2 года на сопровождение и 2 года на обновления безопасности) и пересмотреть предрелизную фазу тестирования.
В настоящее время JIT работает в режиме tracing, но по умолчанию отключён с помощью опции opcache.jit_buffer_size = 0.
RFC предлагает отключить JIT по умолчанию, установив опцию opcache.jit = disable и увеличить
значение jit_buffer_size по умолчанию до 64.
RFC предлагает один из трёх вариантов улучшения работы с анонимными классами:
Добавить поддержку окончательных анонимных классов (синтаксис new final class {}, без изменений в обратной
совместимости).
ИЛИ сделать все анонимные классы окончательными по умолчанию, без возможности сделать их окончательными (изменение в обратной совместимости).
ИЛИ сделать все анонимные классы окончательными по умолчанию, предоставить необязательное ключевое слово open,
чтобы сделать их неокончательными (как в Kotlin, new open class {}, изменение в обратной совместимости).
Niels Dossche предлагает разрешить использовать callback-функции в методах XSLTProcessor::registerPHPFunctions()
и DOMXPath::registerPhpFunctions().
В этом RFC Ilija Tovillo и Larry Garfield предлагают объявлять виртуальные свойства с помощью функций get/set.
Дизайн и синтаксис больше всего похожи на Kotlin, хотя в нём также прослеживается влияние C# и Swift.
1<?php 2 3class User implements Named 4{ 5 private bool $isModified = false; 6 7 public function __construct(private string $first, private string $last) {} 8 9 public string $fullName {10 // Override the "read" action with arbitrary logic.11 get => $this->first . " " . $this->last;12 13 // Override the "write" action with arbitrary logic.14 set($value) => [$this->first, $this->last] = explode(' ', $value);15 }16}
Интересным побочным эффектом этого RFC является то, что он позволяет объявлять абстрактные свойства в интерфейсах:
1<?php 2 3abstract class A 4{ 5 // Extending classes must have a publicly-gettable property. 6 abstract public string $readable { get; } 7 8 // Extending classes must have a protected- or public-writeable property. 9 abstract protected string $writeable { set; }10 11 // Extending classes must have a protected or public symmetric property.12 abstract protected string $both { get; set; }13}14 15class C extends A16{17 // This satisfies the requirement and also makes it settable, which is valid.18 public string $readable;19 20 // This would NOT satisfy the requirement, as it is not publicly readable.21 protected string $readable;22 23 // This satisfies the requirement exactly, so is sufficient. It may only24 // be written to, and only from protected scope.25 protected string $writeable {26 set => $field = $value;27 }28 29 // This expands the visibility from protected to public, which is fine.30 public string $both;31}
Вы уже можете попробовать хуки свойств на 3v4l.org, благодаря Sjon Hortensius.
И оставить свой отзыв на RFC Vote: Property Hooks.
php-tui/php-tui – Фреймворк для создания консольных приложений.
Crell/Serde – Надёжная библиотека Serde (сериализация/десериализация).
buggregator/server – Лёгкий автономный сервер, предлагающий ряд отладочных функций для PHP-приложений, включая Xhprof Profiler, Symfony VarDumper Server, SMTP Server, Sentry Compatibility, Monolog Server и HTTP Requests Dump Server. В комплект поставки входит buggregator/trap – консольный мини-сервер и помощник для более удобной отладки в PHP.
NoiseByNorthwest/php-spx – Простой и понятный модуль для профилирования PHP со встроенным веб-интерфейсом.
reliforp/reli-prof – Профилировщик выборки или профилировщик памяти для PHP, написанный на PHP, который считывает информацию о запущенном PHP VM извне процесса. Позволяет находить узкие места в производительности или утечки памяти скриптов без изменения целевого скрипта или загрузки модулей. В качестве альтернативы можно попробовать arnaud-lb/php-memory-profiler – модуль для профилирования памяти для PHP, он помогает найти утечки памяти в PHP-скриптах.
saloonphp/xml-wrangler – Библиотека, предназначенная для облегчения чтения и записи XML. Также ознакомьтесь с пакетом veewee/xml, предоставляющий все инструменты для работы с XML в PHP без лишней головной боли.
jolicode/JoliMarkdown – Синтаксический корректор для контента в формате markdown. Ознакомьтесь с подробностями в знакомстве с JoliMarkdown.
cerbero90/lazy-json – Пакет, не зависящий от фреймворка, для рекурсивной загрузки JSON любого размера и из любого источника в ленивые коллекции Laravel.
staabm/phpstan-baseline-analysis – Анализирует базовые файлы PHPStan и создаёт агрегированные отчёты о тенденциях ошибок.
hirethunk/verbs – Пакет для поиска событий.
spiral/json-schema-generator – Предоставляет возможность генерировать JSON-схемы из классов DTO.
krowinski/php-mysql-replication – Реализация протокола репликации MySQL на чистом PHP. Позволяет получать события типа insert, update, delete с их данными и необработанными SQL-запросами.
Вышла новая версия популярного инструмента для запуска PHP-кода с множеством новых полезных функций, включая поддержку искусственного интеллекта, нового режима более детального вывода информации, пользовательских темы, средства просмотра логов и многое другое.
Laravel Pulse предоставляет краткую информацию о производительности и использовании вашего приложения. Отслеживайте узкие места, такие как медленные задания и маршруты, находите самых активных пользователей и многое другое.
Он бесплатный, с открытым исходным кодом и готов к расширению.
Обе версии содержат одинаковый набор функций, за исключением поддержки устаревших функций.
Symfony помечает некоторые функции устаревшими и удаляет их спустя два года. Symfony 6.4 будет содержать устаревшие функции, начиная с Symfony 6.1, а Symfony 7.0 будет выпущен без поддержки устаревших функций.
Также Symfony 6.4 – версия с долгосрочной поддержкой, которая получает исправления ошибок в течение 3 лет и ошибки безопасности в течение ещё 1 года.
Symfony 7.0 – обычная версия, которая будет поддерживаться только 8 месяцев. Ознакомьтесь со списком новых возможностей в серии Living on the edge, чтобы узнать об основных особенностях этих выпусков.
Нажимая «Подписаться» я даю согласие на обработку персональных данных.
Мы заботимся о ваших данных и не будем злоупотреблять доверием.