Новости

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

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

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

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

Новости

  • Вышел PHP 8.1

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

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

    В релизе Дмитрий Стогов и другие контрибьюторы сделали много улучшений по производительности.
    На Symfony и Laravel прирост будет существенный (+23% к скорости на демо приложении Symfony).
    На других приложениях, скорее всего, будет не так заметно. Например, на WordPress прирост будет до +3.5%

    В релизе также много депрекейшнов, улучшений консистентности и обработки ошибок.

    Основные депрекейшны:

    • Объявлено устаревшим неявное преобразование float в int, где теряется дробная часть;
    • Интерфейс Serializable объявлен устаревшим;
    • Ограничено использование $GLOBALS;
    • Объявлено устаревшим передача значения null в параметры встроенных функций, которые не nullable;
    • Добавлены типы для возвращаемых значений встроенных классов (и новый атрибут #[ReturnTypeWillChange]);
    • Продолжено удаление типа resource. Ресурсы file_info, imap FTP Connection, LDAP, PostgreSQL теперь будут объектами, соответственно finfo, IMAPConnection, FTPConnection, PgSqlConnection, PgSqlResult.

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

    • Подробно: php.watch/versions/8.1
    • Коротко в видео: videoWhat’s New in PHP 8.1
    • Валентин Удальцов: videoЛайв-кодинг обзор PHP 8.1
    • Видеокурс от Spatie: videoNew features in PHP 8.1

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

  • The New Life of PHP – The PHP Foundation

    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.

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

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

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

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

  • Composer станет еще быстрее

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

  • [RFC] Deprecate dynamic properties

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

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

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

  • Вышла Doctrine DBAL 3.2.0

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

  • [RFC] Readonly classes

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

Инструменты

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

Symfony

  • Вышли Symfony 6.0.0, Symfony 5.4.0
    Разница между ними в том, что Symfony 5.4 содержит устаревшие возможности и обратно совместим, а в Symfony 6.0 все deprecated удалены.
    Что нового можно посмотреть тут symfony.com/blog/category/living-on-the-edge.
  • Improve Symfony Tests Performance — Наиболее полный список практических советов для многократного уменьшения времени тестов от Макса Рафалко, автора Infection.
  • Using PHP 8.1 enumerations in Symfony
  • ruSmart-Factory фикстуры в Symfony — Cпособ организации фикстур в приложении.
  • habrОптимистическая блокировка коллекций Агрегата при использовании Doctrine

Laravel

  • kirschbaum-development/mail-intercept — Пакет для перехвата отправляемых email в тестах.
  • Bitmasking in Laravel and MySQL
  • ruЧто нового в Eloquent ORM в последних версиях Laravel.
  • videoBuild Modern Laravel Apps Using Inertia.js — Бесплатный курс на Laracasts.
  • videoСтрим по тестированию с помощью Pest
  • videoUsing a Laravel REST API with a NextJs App — Новое видео на официальном канале Laravel.

Yii

  • habrПодключение и Настройка ElasticSearch + MySql + Yii2

Статьи

  • Шпаргалка по современному PHP
  • A long way from Monolithic to Composable Architecture — Про изменение архитектуры Magento.
  • habrАрхитектурное тестирование
  • habrСоздаём игру на KPHP с помощью FFI и SDL
  • habrУязвимость и баги, стоящие денег клиентам. Разбираем модуль от CS Coding для CMS CS Cart
  • habrАналог Moodle или как преподаватель-юрист создавал собственную систему дистанционного обучения — Познавательная серия статей о прагматичном подходе.
  • ruНастройка PHP-FPM — Полезная заметка на канале Beer::PHP 🍺.
  • ruПрактики внедрения зависимостей — Мега-статья от Дмитрия Елисеева.

Аудио/Видео

  • audioКак работает OPcache? — Свежий выпуск подкаста «Пятиминутка PHP».
  • habrРелиз PHP 8.1, запуск PHP Foundation и истории переезда на 8.0 — Запись стрима.

community Сообщество

  • roberto-butti/50-drops-of-php — Бесплатная книга, в которой собраны полезные, малоизвестные, недооцененные функции или возможности PHP.
  • habrДайджест Joomla за 2-е полугодие 2021
  • ruДайджеcт новостей CycleORM
  • PHP Russia 2022 — Конференция пройдет 12 и 13 сентября в Москве.
    Приём заявок открыт до 28 марта — присылайте ваши идеи докладов, наш программный комитет поможет с доработкой!
    Вот как было в прошлом году: Видеоотчет о PHP Russia 2021.


Подписывайтесь на Telegram-канал PHP Digest.

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

Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест №215

Добавить комментарий

Кнопка «Наверх»