- PVSM.RU - https://www.pvsm.ru -

Подборка свежих новостей и материалов из мира PHP.
В выпуске: вышел PHP 8.1, создана организация PHP Foundation с целью развития и поддержки PHP, критическая уязвимость в doctrine/dbal, в PHP 8.2 будут объявлены устаревшими динамические свойства, вышли Symfony 6 и Symfony 5.4.
Также в выпуске полезные статьи, видео и другие новости сообщества.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita [1]. Если понравился выпуск, плюсаните пост, пожалуйста.
НовостиОсновные новые возможности:
never для (не)возвращаемых значений;... поддерживает массивы со строковыми ключами;В релизе Дмитрий Стогов и другие контрибьюторы сделали много улучшений по производительности.
На Symfony и Laravel прирост будет существенный (+23% к скорости на демо приложении Symfony).
На других приложениях, скорее всего, будет не так заметно. Например, на WordPress прирост будет до +3.5%
В релизе также много депрекейшнов, улучшений консистентности и обработки ошибок.
Основные депрекейшны:
float в int, где теряется дробная часть;Serializable объявлен устаревшим;$GLOBALS;null в параметры встроенных функций, которые не nullable;#[ReturnTypeWillChange]);удаление типа resource [3]. Ресурсы file_info, imap FTP Connection, LDAP, PostgreSQL теперь будут объектами, соответственно finfo, IMAPConnection, FTPConnection, PgSqlConnection, PgSqlResult.Еще почитать-посмотреть:
What's New in PHP 8.1 [5]
Лайв-кодинг обзор PHP 8.1 [6]
New features in PHP 8.1 [7]Важно:
Активная поддержка PHP 7.4 уже закончена, то есть будут [8] только секьюрити фиксы в течение года.
А поддержка 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 [10].
Подробно об истории создания и работе фонда я рассказал на стриме:
Про PHP Foundation с Романом Пронским [11].
Еще про фонд и историю влияния на PHP можно прочитать в посте от Joe Watkins [12] (сделал большой вклад в создание фонда).
Поддержать фонд донатом можно по ссылке:
opencollective.com/phpfoundation [13]
Обновления о работе будем публиковать в твиттере: @ThePHPF [14].
В ближайшем релизе будет по умолчанию включен Pool Optimizer — это заметно ускорит операции установки обновления, причем чем сложнее набор зависимостей в composer.json, тем существеннее будет прирост скорости и меньше потребление памяти.
Несмотря на многочисленные споры [17], предложение принято с перевесом всего в два голоса 52:25!
Это значит, что в PHP 8.2 динамические (необъявленные) свойства будут объявлены устаревшими, а в PHP 9.0 они будут вовсе удалены. Подробнее в PHP Дайджесте № 215 [18].
В тему свежая статья от Larry Garfield про споры об эволюции PHP [19].
Также обнаружена критическая SQL-инъекция в doctrine/dbal 3.0.0 — 3.1.3 [21], стоит немедленно обновиться до 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
Smart-Factory фикстуры в Symfony [34] — Cпособ организации фикстур в приложении.
Оптимистическая блокировка коллекций Агрегата при использовании Doctrine [35]
Laravel
Что нового в Eloquent ORM [38] в последних версиях Laravel.
Build Modern Laravel Apps Using Inertia.js [39] — Бесплатный курс на Laracasts.
Стрим по тестированию с помощью Pest [40]
Using a Laravel REST API with a NextJs App [41] — Новое видео на официальном канале Laravel.
Yii
Статьи
Архитектурное тестирование [45]
Создаём игру на KPHP с помощью FFI и SDL [46]
Уязвимость и баги, стоящие денег клиентам. Разбираем модуль от CS Coding для CMS CS Cart [47]
Аналог Moodle или как преподаватель-юрист создавал собственную систему дистанционного обучения [48] — Познавательная серия статей о прагматичном подходе.
Настройка PHP-FPM [49] — Полезная заметка на канале Beer::PHP 🍺 [50].
Практики внедрения зависимостей [51] — Мега-статья от Дмитрия Елисеева [52].
Аудио/Видео
Как работает OPcache? [53] — Свежий выпуск подкаста «Пятиминутка PHP».
Релиз PHP 8.1, запуск PHP Foundation и истории переезда на 8.0 [54] — Запись стрима.
Сообщество
Дайджест Joomla за 2-е полугодие 2021 [56]
Дайджеcт новостей CycleORM [57]Подписывайтесь на Telegram-канал PHP Digest [61].
Этот дайджест подготовлен совместно с Insolita [1]. Если вам понравился выпуск, подпишитесь на Юлию в твиттере и поставьте плюс в пост, пожалуйста.
Заметили ошибку или опечатку? Сообщите в личку хабра [62] или телеграм [63].
Прислать ссылку можно через форму [64] или просто написав мне в телеграм [63].
Поиск ссылок по всем дайджестам [65]
← Предыдущий выпуск: PHP-Дайджест №215 [18]
Автор: Роман Пронский
Источник [66]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/370125
Ссылки в тексте:
[1] Insolita: https://twitter.com/DonnaInsolita
[2] Вышел PHP 8.1: https://www.php.net/releases/8.1/ru.php
[3] удаление типа resource: https://php.watch/articles/resource-object
[4] php.watch/versions/8.1: https://php.watch/versions/8.1
[5] What's New in PHP 8.1: https://www.youtube.com/watch?v=rgrQSmUiFJQ
[6] Лайв-кодинг обзор PHP 8.1: https://www.youtube.com/watch?v=5D337gaVPa4&t=3497s
[7] New features in PHP 8.1: https://spatie.be/videos/front-line-php/readonly-properties
[8] будут: https://www.php.net/supported-versions.php
[9] The New Life of PHP – The PHP Foundation: https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/
[10] php/php-src: https://github.com/php/php-src
[11] Про PHP Foundation с Романом Пронским: https://youtu.be/5D337gaVPa4?t=6408
[12] посте от Joe Watkins: https://blog.krakjoe.ninja/2021/11/2-1.html
[13] opencollective.com/phpfoundation: https://opencollective.com/phpfoundation
[14] @ThePHPF: https://twitter.com/ThePHPF
[15] Composer станет еще быстрее: https://github.com/composer/composer/discussions/10276
[16] [RFC] Deprecate dynamic properties: https://wiki.php.net/rfc/deprecate_dynamic_properties
[17] споры: https://habr.com/ru/post/589229/#:~:text=%5BRFC%5D%20Deprecate%20dynamic%20properties
[18] PHP Дайджесте № 215: https://habr.com/ru/post/589229/
[19] споры об эволюции PHP: https://peakd.com/hive-168588/@crell/evolving-php-safely
[20] Doctrine DBAL 3.2.0: https://www.doctrine-project.org/2021/11/26/dbal-3.2.0.html
[21] критическая SQL-инъекция в doctrine/dbal 3.0.0 — 3.1.3: https://github.com/doctrine/dbal/security/advisories/GHSA-r7cj-8hjg-x622
[22] [RFC] Readonly classes: https://wiki.php.net/rfc/readonly_classes
[23] clue/framework-x: https://github.com/clue/framework-x
[24] marcosh/lamphpda: https://github.com/marcosh/lamphpda
[25] web3-php/web3: https://github.com/web3-php/web3
[26] SergiX44/Nutgram: https://github.com/SergiX44/Nutgram
[27] CuyZ/Valinor: https://github.com/CuyZ/Valinor
[28] Symfony 6.0.0: https://symfony.com/blog/symfony-6-0-0-released
[29] Symfony 5.4.0: https://symfony.com/blog/symfony-5-4-0-released
[30] symfony.com/blog/category/living-on-the-edge: https://symfony.com/blog/category/living-on-the-edge/6.0-5.4
[31] Improve Symfony Tests Performance: https://maks-rafalko.github.io/blog/2021-11-21/symfony-tests-performance/
[32] Infection: https://github.com/infection/infection
[33] Using PHP 8.1 enumerations in Symfony: https://alex-daubois.medium.com/using-php-8-1-enumerations-in-symfony-af5ba761135d
[34] Smart-Factory фикстуры в Symfony: https://antonshell.me/post/symfony-smart-factory-fixtures
[35] Оптимистическая блокировка коллекций Агрегата при использовании Doctrine: https://habr.com/ru/post/590471/
[36] kirschbaum-development/mail-intercept: https://github.com/kirschbaum-development/mail-intercept
[37] Bitmasking in Laravel and MySQL: https://aaronfrancis.com/2021/bitmasking-in-laravel-and-mysql
[38] Что нового в Eloquent ORM: https://laravel.demiart.ru/eloquent-new-features/
[39] Build Modern Laravel Apps Using Inertia.js: https://laracasts.com/series/build-modern-laravel-apps-using-inertia-js
[40] Стрим по тестированию с помощью Pest: https://www.youtube.com/watch?v=4xNT-j177CE
[41] Using a Laravel REST API with a NextJs App: https://www.youtube.com/watch?v=Urgstu-mCec
[42] Подключение и Настройка ElasticSearch + MySql + Yii2: https://habr.com/ru/post/590529/
[43] Шпаргалка по современному PHP: https://front-line-php.com/cheat-sheet
[44] A long way from Monolithic to Composable Architecture: https://www.linkedin.com/pulse/long-way-from-monolithic-composable-architecture-igor-miniailo/
[45] Архитектурное тестирование: https://habr.com/ru/post/590555/
[46] Создаём игру на KPHP с помощью FFI и SDL: https://habr.com/ru/company/vk/blog/581238/
[47] Уязвимость и баги, стоящие денег клиентам. Разбираем модуль от CS Coding для CMS CS Cart : https://habr.com/ru/post/592335/
[48] Аналог Moodle или как преподаватель-юрист создавал собственную систему дистанционного обучения: https://habr.com/ru/post/590605/
[49] Настройка PHP-FPM: https://t.me/beerphp/89
[50] Beer::PHP 🍺: https://t.me/beerphp
[51] Практики внедрения зависимостей: https://elisdn.ru/blog/148/dependency-injection
[52] Дмитрия Елисеева: https://twitter.com/elisdnru
[53] Как работает OPcache?: https://5minphp.ru/episode93/
[54] Релиз PHP 8.1, запуск PHP Foundation и истории переезда на 8.0: https://www.youtube.com/watch?v=5D337gaVPa4
[55] roberto-butti/50-drops-of-php: https://github.com/roberto-butti/50-drops-of-php
[56] Дайджест Joomla за 2-е полугодие 2021: https://habr.com/ru/post/592461/
[57] Дайджеcт новостей CycleORM: https://gist.github.com/butschster/337051259807aa8433ebdd8cca8e0991#file-2021-11-19-md
[58] PHP Russia 2022: https://phprussia.ru/moscow/2022
[59] программный комитет: https://phprussia.ru/moscow/2022#committee
[60] Видеоотчет о PHP Russia 2021: https://youtu.be/ZuZOolh7g0Y
[61] PHP Digest: https://t.me/phpdigest
[62] личку хабра: https://habrahabr.ru/conversations/pronskiy/
[63] телеграм: https://t.me/pronskiy
[64] через форму: https://bit.ly/php-digest-add-link
[65] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[66] Источник: https://habr.com/ru/post/592621/?utm_source=habrahabr&utm_medium=rss&utm_campaign=592621
Нажмите здесь для печати.