PHP Дайджест № 210 (16 – 30 августа 2021)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Фото: Peter Kokot.

Подборка свежих новостей и материалов из мира PHP. Вышла третья бета PHP 8.1, Swiftmailer больше не будет поддерживаться, PHP-FIG обсуждает обновляемые стандарты PER. Для PHP 8.2 предложены два новых RFC: про удаление динамических свойств и перегрузку операторов. Также в выпуске порция полезных инструментов, статьи и видео.

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

Новости


  • PHP 8.1 Beta 3


    Последняя бета в цикле. Следующим релизом станет RC 1, который ожидается 2 сентября.
  • PHP 8.0.10, PHP 7.4.23, PHP 7.3.30


    Секьюрити обновления актуальных веток.
  • Конец Swiftmailer


    В ноябре прекращается поддержка популярного пакета для отправки почты Swiftmailer. Вместо него будет развиваться symfony/mailer.

    Возможности и концепции Symfony Mailer повторяют Swiftmailer, поэтому миграция должна пройти достаточно легко. В Rector есть скрипт миграции и он всего лишь переименовывает классы.
  • PHP Evolving Recommendations (PERs)


    Раньше PHP-FIG выпускали только PSP-стандарты. Проблема в том, что некоторые подобные стандарты требуют постоянной доработки. Например, в случае с код-стайлом сейчас PSR-12 не включает новые возможности из PHP 7.4-8.0.

    Предлагается ввести новый тип рекомендаций PER, которые можно будет обновлять более оперативно.
  • 4 сентября — PHP fwdays'21 Online


    Совсем скоро пройдёт традиционная конференция от fwdays. Программа.

    Будет бесплатная трансляция всех докладов в день проведения (нужно зарегистрироваться).

    Есть дополнительные платные бонусы. Для них можно использовать промокод: HABRDIGEST.


PHP Internals


  • [RFC] Deprecate dynamic properties


    В текущих версиях PHP, если попытаться записать в несуществующее свойство, то оно будет автоматически создано.

    В современном коде это редко делается намеренно, чаще это опечатка или просто дурной тон.

    В этом RFC предлагается задепрекейтить и впоследствии удалить возможность создания динамических (необъявленных) свойств.

    class User {
        public $name;
    }
    
    $user = new User;
    
    // Assigns declared property User::$name.
    $user->name = "foo";
    
    // Oops, a typo:
    $user->nane = "foo";
    // PHP <= 8.1: Молча создает динамическое свойство $user->nane.
    // PHP    8.2: Вызывает предупреждение, но все равно создает динамическое свойство.
    // PHP    9.0: Выбрасывает исключение Error.
    


    Это изменение не будет касаться класса stdClass и унаследованных от него. Поведение магических __get/__set также не затрагиваются этим изменением.

    $obj = (object) []; // = new stdClass;
    
    // No deprecation warning
    $obj->foo = 1;
    
    class myStdClass extends stdClass {}
    $obj2 = new myStdClass;
    
    // No deprecation warning
    $obj2->bar = 1;
    


    Благодаря этому изменению в PHP 9.0 можно будет уменьшить размер объекта на 8 байт. На одном объекте это, конечно, ничто, но суммарно на больших приложениях будет заметно.

  • [RFC] User Defined Operator Overloads


    В этом RFC автор, Jordan LeDoux, предлагает добавить возможность перегрузки операторов.

    По сути, для каждого оператора предлагается определить свой магический метод, например __add() для `+` или __equals() для `==`.

    С их помощью можно описывать желаемое поведение для объектов.
    $a = new Number(8);
    $b = new Number(6);
    $c = new Number(4);
    
    // Вместо такого
    $posRoot = $b->mul(-1)->add($b->pow(2)->sub($a->mul($c)->mul(4))->sqrt())->div($a->mul(2));
    
    // Можно будет сделать вот так
    $posRoot = ((-1 * $b) + ($b ** 2 - 4 * $a * $c)->sqrt()) / (2 * $a);
    

    В случае если предложение будет принято, то практически можно будет реализовать скалярные объекты.

    Тем не менее предложение спорное и слишком много нюансов в нем. И несмотря на очень детальный и продуманный RFC, вероятность принятия невысокая.

  • cross [RFC] Nullable Intersection types


    Предложение сделать пересечения типов nullable в PHP 8.1 не прошло голосование. Многие голосовали против, потому что оно было выдвинуто слишком поздно. Поэтому есть вероятность, что позже будет переголосование в PHP 8.2.


Инструменты


  • whsv26/functional — Автор столкнулся с проблемами существующих реализаций коллекций на PHP и написал свой пакет. Подробнее в статье Дженерик коллекции в PHP.
  • phpseclib/phpseclib — Реализация SSH, SFTP, RSA / DSA / ELLIPTIC CURVES, AES / CHACHA20 / ETC, X.509 на чистом PHP.
  • doekenorg/iterator-functions — Набор функций аналогичных встроенным array_*, но принимающих итераторы. На случай если не нравится классика от Никиты Попова nikic/iter.
  • azjezz/psl — Как могла бы выглядеть стандартная библиотека PHP.
  • php-censor/phpdoc-checker — Консольная утилита для валидации PHPDoc-блоков.
  • github-php/sponsors — Пакет для работы с API GitHub Sponsors. Можно организовать контроль доступа проверяя является ли пользователь спонсором.
  • paglliac/php-dependency-analysis — Инструмент для анализа зависимостей внутри проекта. Более продвинутые штуки можно делать с помощью qossmic/deptrac или phparkitect/arkitect.
  • ArtARTs36/GitHandler — Обертка над Git для PHP. Прислал Ukrainsky.
  • butschster/CronExpressionGenerator — Генератор cron выражений. Прислал butschster.
  • butschster/ray-server — Бесплатный сервер для отладки PHP приложений с помощью spatie/ray. Пост с обзором возможностей и деталями реализации. Прислал butschster.


Symfony


  • kafkiansky/symfony-middleware — Совместимые с PSR-15 мидлвары для Symfony.
  • Symfony Messenger в микросервисах: контракты сообщений и отказоустойчивость — Полезно про микросервисы и асинхронную коммуникацию.
  • Неделя Symfony #765 (23-29 августа 2021)


Laravel


  • Результаты опроса State of Laravel 2021 и видеобзор результатов от Laravel Daily.
  • Создание RoadRunner плагина для Laravel Octane
  • JustIversen/laravel-job-chainer Позволяет динамически создавать цепочку задач для очереди.
  • video Testing Laravel — Платный курс по тестированию от Spatie. Доступны бесплатные эпизоды: как тестировать middleware и
    Полезные приемы тестирования Laravel.
  • ru Пользовательские часовые пояса


Yii


  • habr Новости Yii 2021, выпуск 3
  • Yii 2 интеграции API для кучи разных сервисов: Почта.ру, Сбербанк, ПриватБанк и много других.
  • yiisoft/mutex — Реализация мьютекса, для избежания взаимных блокировок. Адаптеры для PDO, Redis и файлов прилагаются.


Статьи


  • Named arguments and open source projects — О проблемах и преимуществах использования именованных аргументов в open-source библиотеках и фреймворках. Весьма актуально в контексте набросов от известных участников сообщества:

  • Несколько советов по использованию дата-провайдеров в тестах PHPUnit.
  • Об использовании абстракций PSR — Стоит ли на них завязываться, делать обертку или писать свое? В тему пост о том, какие PSRи почему используются в Yii 3.
  • О создании публичных/приватных монорепозиториев для PHP-проектов.
  • ru Поговорим о проблемах кэширования.
  • habr Визуальное автотестирование сайтов с помощью Codeception
  • habr Заметки KPHP: тестирование и бенчмарки


Аудио/Видео


  • videoru Большой разговор про автотесты в PHP (Артём Прозоров, ZeBrains).
  • audio devmode #89 — Should Craft CMS use Yii3 or Laravel? — CraftCMS — это коммерческая CMS на Yii2. В подкасте разработчики обсуждают экосистему Carft CMS и потенциальный переход на Laravel. Спасибо Пятиминутке PHP за наводку.
  • audio PHP Internals News #94 — С Никитой Поповым про RFC Unwrap Reference After Foreach.
  • audio PHP Internals News #93 — C Jordan LeDoux про уже отозванный RFC Never For Parameter Types



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

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

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

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

Источник: https://habr.com/ru/post/575354/


Интересные статьи

Интересные статьи

Все главные новости из мира Joomla за осень 2020 и весну 2021, в одной статье.Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla. По...
Всем привет!Мы постоянно следим за миром phygital, актуальными событиями, новостями и аналитикой, и делимся им с вами в нашем ежемесячном дайджесте "DIGEST: Dive into phy...
Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. О нап...
В нашей новой подборке для домашнего чтения быстрый переход на удаленную работу, хождение по граблям Arduino, рассказы интерфейсов и запах кода, лучшие издатели и вызовы сеток. Берегите себя! ...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.