Июнь 2024

Июнь 2024

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

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

Новости

Вышли PHP 8.1.29, PHP 8.2.20 и PHP 8.3.8

В этих выпусках исправлены уязвимости:

  • Инъекция аргументов в PHP-CGI.
  • Обход фильтра FILTER_VALIDATE_URL в функции filter_var.
  • Экранирование аргументов для bat- и cmd файлов в Windows окружении для функции proc_open.
  • Уязвимость к атаке Marvin функции openssl_private_decrypt.

Пожалуйста, обновитесь, как можно скорее.

PHP исполнилось 29 лет!

8 июня 1995 года Rasmus Lerdorf впервые объявил о PHP.

Рома Пронский опубликовал ролик, в котором он скомпилировал и запустил первую версию языка. Посмотрите, каким был PHP 29 лет назад.

С днем рождения, PHP! 🎉🥳🎂

Developer Ecosystem Survey 2024

Команда JetBrains запустила восьмое ежегодное исследование экосистем разработчиков, посвященное текущему состоянию индустрии разработки программного обеспечения.

PHP Core

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

RFC: Add stream open functions to XML{Reader,Writer}

Niels Dossche предлагает добавить два новых метода для работы с потоком модуля XML:

  • XMLReader::fromStream()
  • XMLWriter::toStream()

📣 RFC: Static Constructors

Erick de Azevedo Lima предлагает добавить новый магический метод __staticConstruct, который будет вызываться автоматически при вызове статического метода.

📣 RFC: Static class

Paul Morris предлагает добавить новый тип класса – статический. Статический класс определяется ключевым словом static, а все методы этого класса автоматически становятся статическими. В настоящее время в PHP можно объявить статическими отдельные методы.

📣 RFC: Lazy Objects

Arnaud Le Blanc и Nicolas Grekas предлагают добавить ленивые объекты в PHP. Ленивые объекты не будут инициализироваться до тех пор, пока в этом нет необходимости, например, не будет прочитано или изменено свойство объекта.

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

📣 RFC: Deprecations for PHP 8.4

Группа авторов Niels Dossche, Gina Peter Banyard, Máté Kocsis, Tim Düsterhus, Kamil Tekiela и Jorg Sowa запустила обсуждение RFC, чтобы определить какой функционал объявить устаревшим в PHP 8.4 и удалить в PHP 9.0.

Предлагается объявить устаревшими:

  • Формально устаревшие свойства: DOMDocument::$actualEncoding, DOMDocument::$config, DOMEntity::$actualEncoding, DOMEntity::$encoding и DOMEntity::$version
  • Метод DOMImplementation::getFeature($feature, $version)
  • Магический метод SplFixedArray::__wakeup()
  • Константы SUNFUNCS_RET_STRING, SUNFUNCS_RET_DOUBLE, SUNFUNCS_RET_TIMESTAMP, DOM_PHP_ERR, E_STRICT
  • Константу SOAP_FUNCTIONS_ALL и передачу её в метод SoapServer::addFunction()
  • Функции strtok(), mysqli_ping(), mysqli::ping(), mysqli_refresh(), mysqli_kill(), lcg_value(), uniqid(), md5(), sha1(), md5_file() и sha1_file()
  • Опции настройки session.sid_length и session.sid_bits_per_character
  • Работу функций xml_set_object() и xml_set_*_handler() со строковыми именами методов
  • Передачу E_USER_ERROR в функцию trigger_error()
  • Передачу null и false в функцию dba_key_split()
  • Передачу некорректных типов данных для опций в функции модуля hash
  • Передачу $data в виде массива в функцию file_put_contents()
  • Собственный механизм экранирования CSV
  • Тег S функции unserialize()
  • Второй параметр функции mysqli_store_result()
  • Использование одного подчёркивания _ в качестве имени класса

Инструменты

  • FrankenPHP v1.2.0 – В этом обновлении сервера приложений PHP добавлены встроенный веб-сервер Caddy 2.8, поддержка полнодуплексных соединений HTTP/1 и другие возможности.

  • php-soap – Замена модуля ext-soap на чистом PHP.

  • davecheney/httpstat – Аккуратный инструмент визуализации HTTP-запросов.

  • php-static-analysis/attributes – Пакет позволяет использовать атрибуты вместо аннотаций PHPDoc для статического анализа с помощью PHPStan.

  • rectorphp/type-perfect – Следующий уровень проверки объявления типа правил PHPStan.

  • phpstan/phpstan-doctrine – Расширения Doctrine для PHPStan.

  • koriym/spaceman – Пакет для присваивания пространства имён унаследованному PHP-коду без пространства имён.

  • olinox14/path-php – Объектно-ориентированные операции с файлами и путями, вдохновленные библиотекой path.py.

  • cognesy/instructor-php – Структурированный вывод данных с помощью LLM на PHP. Разработан для простоты, прозрачности и контроля.

  • NumPower/numpower – Модуль PHP для эффективных научных вычислений и работы с массивами данных с поддержкой GPU. Посмотрите на простую нейронную сеть, созданную на PHP с нуля с помощью NumPower.

  • krakjoe/parallel – Лаконичный API параллельного параллелизма для PHP. Модуль был недавно обновлён и теперь совместим с PHP 8.2 и 8.3. Любопытно узнать о случаях использования? Посмотрите этот пример: Обработка одного миллиарда строк в PHP.

  • Swoole v6.0.0-alpha – Альфа-версия демонстрирует значительные изменения в Swoole, такие, как многопоточный режим и поддержка io_uring для файловых операций.

  • seanmorris/php-wasm – PHP в браузере, работающий на основе WebAssembly. В настоящее время поддерживается WordPress, поэтому в последнее время в него было внесено много интересных обновлений, например, динамическая загрузка модулей. Версия v0.0.9 также включает php-cgi-wasm, который выполняет php-cgi SAPI и ведёт себя более похоже на PHP, который работает под Apache, и менее похоже на PHP, который вы вызываете через CLI. Это позволяет вам запускать практически любое PHP-приложение полностью на стороне клиента.

Symfony

Laravel

Статьи

Видео

События

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

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

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