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

PHP Дайджест № 216 (15 – 30 ноября 2021)

PHP Дайджест № 216 (15 – 30 ноября 2021) - 1

Подборка свежих новостей и материалов из мира PHP.
В выпуске: вышел PHP 8.1, создана организация PHP Foundation с целью развития и поддержки PHP, критическая уязвимость в doctrine/dbal, в PHP 8.2 будут объявлены устаревшими динамические свойства, вышли Symfony 6 и Symfony 5.4.
Также в выпуске полезные статьи, видео и другие новости сообщества.

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

Этот дайджест подготовлен совместно с Insolita [1]. Если понравился выпуск, плюсаните пост, пожалуйста.

PHP Дайджест № 216 (15 – 30 ноября 2021) - 2 Новости

  • Вышел PHP 8.1 [2]

    Основные новые возможности:

    • Enums они же перечисления;
    • Readonly свойства;
    • First-class callable — получение ссылки на любую функцию;
    • Оператор new в инициализаторах (и вложенные атрибуты);
    • Файберы;
    • final константы в классах;
    • Новый тип never для (не)возвращаемых значений;
    • Запись восьмеричных чисел с префиксом 0o;
    • Оператор ... поддерживает массивы со строковыми ключами;

    В релизе Дмитрий Стогов и другие контрибьюторы сделали много улучшений по производительности.
    На 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.

    Еще почитать-посмотреть:

    Важно:
    Активная поддержка PHP 7.4 уже закончена, то есть будут [8] только секьюрити фиксы в течение года.
    А поддержка PHP 7.3 будет полностью прекращена 6 декабря.
    Обновляйтесь!

  • The New Life of PHP – The PHP Foundation [9]

    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].

    Подробно об истории создания и работе фонда я рассказал на стриме: video Про PHP Foundation с Романом Пронским [11].

    Еще про фонд и историю влияния на PHP можно прочитать в посте от Joe Watkins [12] (сделал большой вклад в создание фонда).

    Поддержать фонд донатом можно по ссылке:
    opencollective.com/phpfoundation [13]

    Обновления о работе будем публиковать в твиттере: @ThePHPF [14].

  • Composer станет еще быстрее [15]

    В ближайшем релизе будет по умолчанию включен Pool Optimizer — это заметно ускорит операции установки обновления, причем чем сложнее набор зависимостей в composer.json, тем существеннее будет прирост скорости и меньше потребление памяти.

  • [RFC] Deprecate dynamic properties [16]

    Несмотря на многочисленные споры [17], предложение принято с перевесом всего в два голоса 52:25!

    Это значит, что в PHP 8.2 динамические (необъявленные) свойства будут объявлены устаревшими, а в PHP 9.0 они будут вовсе удалены. Подробнее в PHP Дайджесте № 215 [18].

    В тему свежая статья от Larry Garfield про споры об эволюции PHP [19].

  • Вышла Doctrine DBAL 3.2.0 [20]

    Также обнаружена критическая SQL-инъекция в doctrine/dbal 3.0.0 — 3.1.3 [21], стоит немедленно обновиться до 3.1.4 или новее.

  • [RFC] Readonly classes [22]

    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');
        }
    }
    

PHP Дайджест № 216 (15 – 30 ноября 2021) - 7 Инструменты

  • clue/framework-x [23] — Реактивный микро-фреймворк от создателей ReactPHP.
  • marcosh/lamphpda [24] — Набор иммутабельных структур для функционального программирования.
  • web3-php/web3 [25] — Клиент для работы с Ethereum RPC.
  • SergiX44/Nutgram [26] — Фреймворк для ботов Telegram с простым API.
  • CuyZ/Valinor [27] — Маппер данных в строго-типизированные объекты.

PHP Дайджест № 216 (15 – 30 ноября 2021) - 8 Symfony

PHP Дайджест № 216 (15 – 30 ноября 2021) - 11 Laravel

PHP Дайджест № 216 (15 – 30 ноября 2021) - 16 Yii

PHP Дайджест № 216 (15 – 30 ноября 2021) - 18 Статьи

PHP Дайджест № 216 (15 – 30 ноября 2021) - 25 Аудио/Видео

community Сообщество


Подписывайтесь на 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