PHP-Дайджест № 187 (18 августа – 7 сентября 2020)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 beta 3, принят новый синтаксис атрибутов в PHP 8, Zephir всё, целая пачка полезных инструментов, статьи, видео, подкасты.

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



Новости и релизы


  • PHP 8 beta 3 — Последняя бета в цикле. Следующим релизом станет RC 1, который ожидается 17 сентября.
  • PHP 7.4.10, PHP 7.3.22
  • Будущее Zephir и Phalcon — Один из контрибьюторов языка Zephir и PHP-фреймворка Phalcon ушёл из проекта, поэтому активная разработка Zephir приостановлена, а Phalcon 5 планируется переписать на чистый PHP.
  • В WordPress сообществе обсуждается план по поддержке версий PHP. Судя по ответам лидера проекта Matt Mullenweg, PHP 5.6 будет поддерживаться еще долго. По официальной статистике PHP ≤5.6 используется на 21.6% установок WP.

PHP Internals


  • check [RFC] Shorter Attribute Syntax Change — Наконец-то закончилась эпопея с синтаксисом для атрибутов. На переголосовании принят вариант #[Attribute].
    #[
      ORM\Entity,
      ORM\Table("user")
    ]
    class User
    {
        #[ORM\Id, ORM\Column("integer"), ORM\GeneratedValue]
        private $id;
    
        #[ORM\Column("string", ORM\Column::UNIQUE)]
        #[Assert\Email(["message" => "The email '{{ value }}' is not a valid email."])]
        private $email;
    }
    

    Кстати, предыдущий синтаксис с @@Attr не поддерживал группировку атрибутов и поэтому такая возможность была убрана из PR. Но поскольку у #[ ] есть маркер конца, то группировку он поддерживает и она была возвращена.

    // Можно и так
    #[ORM\Entity]
    #[ORM\Table("user")]
    
    // и так
    #[
        ORM\Entity,
        ORM\Table("user")
    ]

    Подробнее об атрибутах было в посте.
  • new [RFC] any() and all() on iterables — Предлагается добавить две новых функции в стандартную библиотеку:
    any(iterable $input, ?callable $callback = null): bool — запустит колбек на каждом элементе и остановится, на первом, который вернет true.
    all(...) — вернет true только, если колбек вернет true для каждого элемента.

    Пример использования:

    // Было
    $satisifes_predicate = false;
    foreach ($item_list as $item) {
        if (API::satisfiesCondition($item)) {
            $satisfies_predicate = true;
            break;
        }
    }
    if (!$satisfies_predicate) {
        throw new APIException("No matches found");
    }
    
    // Стало
    if (!any($item_list, fn($item) => API::satisfiesCondition($item))) {
        throw new APIException("No matches found");
    }

Инструменты


  • Pest 0.3 — Обертка над PHPUnit, которая позволяет писать тесты в более простом виде. Также готов плагин для PhpStorm Pest IntelliJ.
  • Codeception/Verify 2.0 — Ассершены для PHPUnit и Codeception с fluent-интерфейсом.
  • ramsey/composer-repl — Добавляет команду composer repl для запуска bobthecow/psysh.
  • brick/money — Библиотека для работы с денежными данными. Работает, даже если не уставлены GMP или BCMath. Сравнение с moneyphp/money.
  • bassim/super-expressive-php — Библиотека позволяет описывать регулярные выражения почти-естественным языком через текучий интерфейс. Альтернатива VerbalExpressions/PHPVerbalExpressions.
  • phpsci/phpsci-carray — Расширение PHP для научных вычислений. Основано на NumPy.
  • github.com/phpwebclient — Декораторы и хелперы для PSR-18 совместимых HTTP-клиентов.
  • hamlet-framework/type — Библиотека для спецификации типов. Может быть использована везде, где нужна спецификация типов, включая cast, assert, instanceof и т. п.

Symfony


  • ru Книга «Symfony 5: Быстрый старт» доступна онлайн на русском.
  • Неделя Symfony #714 (31 августа — 6 сентября 2020)

Laravel


  • laravel-orion/laravel-orion — Пакет для автоматического создания REST API по Eloquent-моделям и их отношениям. Прислал @alexzarbn.
  • Statamic 3 — CMS на Laravel.
  • Типичные ошибки в безопасности в Laravel-приложениях.
  • ru Legacy и Laravel: Переписываем устаревшее приложение на современный фреймворк.
  • ru Laravel 8 — Что нового? — Новая версия фреймворка выходит 8 сентября.
  • habr Laravel–Дайджест (24 августа – 6 сентября 2020)
  • video Laravel Worldwide Meetup #2: Neo Ighodaro and Michael Dyrynda

Yii


  • yiisoft/auth — Свежий пакет из семейства Yii 3 предоставляет различные методы аутентификации, набор абстракций для реализации в приложении, и PSR-15 middleware для аутентификации.
  • yiisoft/strings — Хелперы для работы со строками.

Async PHP


  • habr Пишем простую ORM с возможностью смены БД на лету

Материалы для обучения


  • Архитектура PHP-приложений вдохновленная «чистой архитекторой» — (Чтобы обойти пейвол медиума, достаточно открыть ссылку в инкогнито окне).
  • Диалекты в коде: Часть 1 — О том, как разные люди могут использовать один и тот же язык программирования совершенно по-разному.
  • Как работает unserialize() в PHP — и почему она приводит к уязвимостям.
  • Подключаем статический анализ (psalm) в проекте.
  • Ускоряем PHP при помощи FFI.
  • Настраиваем Xdebug + Docker + PhpStorm, а также немного о продвинутых техниках отладки.
  • Anna Filina — Полезный тред от Anna Filina о рефакторинге легаси приложений на PHP:
  • habr Xdebug через Windows Subsystem For Linux 2 (WSL2).
  • habr Модернизация старого PHP-приложения.
  • habr Мёртвый код: найти и обезвредить.
  • habr Перечисления в PHP.
  • habr Ты решил написать свой фреймворк. Стоило оно того? — Расшифровка выпуска подкаста Между скобок с Александром Лисаченко.
  • habr Как Lingualeo переехал на PostgreSQL с 23 млн юзеров — Эпичный пост о переносе логики из ЗРЗ в хранимки. И годный ответ: Вред хранимых процедур.
  • habr 20_20 — год, в котором подчеркивание в числовых литералах победило — история разделителей в числовых литералах.

Аудио/Видео


  • video Доклад Tobias Nyholm про async-aws/aws асинхронный клиент для сервисов AWS.
  • ruvideo ХудоБедно на тему работы в IT с Александром Макаровым, Сергей Жуком и Антоном Моревым.
  • audio PHP Internals News #67 — Дерик Xdebug общается сам с собой на тему нового выражения match. Подробнее об истории match в PHP в посте.





Спасибо за внимание!

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

Больше новостей и комментариев в Telegram-канале PHP Digest.

Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 186
Источник: https://habr.com/ru/post/518064/


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

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

Есть несколько способов добавить водяной знак в Битрикс. Рассмотрим два способа.
Подборка свежих уроков, видео и пакетов по фреймворку Laravel за неделю. Читать дальше →
Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Подборка новых статей по фреймворку Laravel. В этому выпуске мы попробуем создавать свои команды и фасады, сравним инструменты для отладки кода, научимся писать «чистый» код и посмотр...
Привет! Через неделю, 9 августа (это тоже будет пятница, да), мы проведем наш четвертый Backend-митап. Как обычное, вход бесплатный, трансляция в день мероприятия, и интересные доклады. Зар...