Подборка свежих новостей и материалов из мира PHP.
В выпуске: вышел PHP 8.1, создана организация PHP Foundation с целью развития и поддержки PHP, критическая уязвимость в doctrine/dbal, в PHP 8.2 будут объявлены устаревшими динамические свойства, вышли Symfony 6 и Symfony 5.4.
Также в выпуске полезные статьи, видео и другие новости сообщества.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.
Новости
-
Основные новые возможности:
- Enums они же перечисления;
- Readonly свойства;
- First-class callable — получение ссылки на любую функцию;
- Оператор new в инициализаторах (и вложенные атрибуты);
- Файберы;
- final константы в классах;
- Новый тип
never
для (не)возвращаемых значений;
- Запись восьмеричных чисел с префиксом 0o;
- Оператор
...
поддерживает массивы со строковыми ключами;
В релизе Дмитрий Стогов и другие контрибьюторы сделали много улучшений по производительности.
На Symfony и Laravel прирост будет существенный (+23% к скорости на демо приложении Symfony).
На других приложениях, скорее всего, будет не так заметно. Например, на WordPress прирост будет до +3.5%
В релизе также много депрекейшнов, улучшений консистентности и обработки ошибок.
Основные депрекейшны:
- Объявлено устаревшим неявное преобразование
float
в int
, где теряется дробная часть;
- Для
Serializable
необходимо использовать __serialize()
/__unserialize()
;
- Ограничено использование
$GLOBALS
;
- Объявлено устаревшим передача значения
null
в параметры встроенных функций, которые не nullable
;
- Добавлены типы для возвращаемых значений встроенных классов (и новый атрибут
#[ReturnTypeWillChange]
);
- Продолжено
удаление типа resource
. Ресурсы file_info, imap FTP Connection, LDAP, PostgreSQL теперь будут объектами, соответственно finfo, IMAP\Connection, FTP\Connection, PgSql\Connection, PgSql\Result.
Еще почитать-посмотреть:
Важно:
Активная поддержка PHP 7.4 уже закончена, то есть будут только секьюрити фиксы в течение года.
А поддержка PHP 7.3 будет полностью прекращена 6 декабря.
Обновляйтесь!
-
JetBrains совместно с компаниями Automattic (WordPress), Acquia (Drupal), Laravel, Private Packagist (Composer), Symfony, Zend, Craft CMS, Tideways и PrestaShop учредили некоммерческую организацию PHP Foundation, миссия которой — обеспечить долгосрочное развитие языка PHP.
Одной из причин создания организации стало изменение интересов Никиты Попова. Уже 10 лет он занимался PHP и последние 3 года работу Никиты над PHP оплачивала компания JetBrains. Кроме PHP, Никита долгое время контрибьютил в LLVM и Rust. И вот теперь решил сосредоточить свою профессиональную деятельность на LLVM и с 1 декабря Никита перейдёт на работу в другую компанию. Никита все еще будет частью PHP-сообщества, но контрибьютить будет значительно меньше.
Первичная задача фонда — трудоустроить разработчиков в режиме полного или частичного рабочего дня, которые будут заниматься ядром интерпретатора PHP в репозитории php/php-src.
Подробно об истории создания и работе фонда я рассказал на стриме: Про PHP Foundation с Романом Пронским.
Еще про фонд и историю влияния на PHP можно прочитать в посте от Joe Watkins (сделал большой вклад в создание фонда).
Поддержать фонд донатом можно по ссылке:
opencollective.com/phpfoundation
Обновления о работе будем публиковать в твиттере: @ThePHPF.
-
В ближайшем релизе будет по умолчанию включен Pool Optimizer — это заметно ускорит операции установки обновления, причем чем сложнее набор зависимостей в composer.json, тем существеннее будет прирост скорости и меньше потребление памяти.
-
Несмотря на многочисленные споры, предложение принято с перевесом всего в два голоса 52:25!
Это значит, что в PHP 8.2 динамические (необъявленные) свойства будут объявлены устаревшими, а в PHP 9.0 они будут вовсе удалены. Подробнее в PHP Дайджесте № 215.
В тему свежая статья от Larry Garfield про споры об эволюции PHP.
-
Также обнаружена критическая SQL-инъекция в doctrine/dbal 3.0.0 — 3.1.3, стоит немедленно обновиться до 3.1.4 или новее.
-
Máté Kocsis предлагает для PHP 8.2 readonly классы. По сути, это просто класс в котором все свойства readonly и запрещены динамические свойства. То есть это небольшой синтаксический сахар для удобства.
readonly class Foo {
public string $prop;
}
Эквивалентно:
class Foo {
public readonly string $prop;
public function __set($name, $value) {
throw new Error('Cannot create dynamic property');
}
}
Инструменты
Symfony
Laravel
Yii
Статьи
Аудио/Видео
Сообщество
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, подпишитесь на Юлию в твиттере и поставьте плюс в пост, пожалуйста.
Заметили ошибку или опечатку? Сообщите в
личку хабра или
телеграм.
Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест №215