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

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

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

Фото: Florian Engelhardt.

Подборка свежих новостей и материалов из мира PHP. В выпуске: вторая бета PHP 8.1 и много материалов об этой версии, два свежих RFC для PHP 8.2, ReactPHP и Amphp объединяют усилия над базой для асинхронного PHP. А также другие новости и релизы, порция полезных инструментов, статьи и видео.

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

Новости


  • PHP 8.1.0 beta 2


    Подъехала уже вторая бета с несколькими фиксами. Следующая бета ожидается 19 августа.

    [RFC] Nullable Intersection types — Судя по ходу голосования, не проходит в PHP 8.1: function setBar((X&Y)|null $bar = null): (X&Y)|null.

    Об основных новых фичах можно прочитать в рассылке от Brent Roose: The Road to PHP 8.1.

    Также отличный перевод habr PHP 8.1: до и после.

    И полное описание изменений есть на PHP.Watch: php.watch/versions/8.1.

    Кстати, там же был пост Directory Uploads in PHP 8.1 — В PHP 8.1 массив $_FILES будет содержать секцию full_path с путями файлов от пользователя. Это нужно для поддержки загрузки каталогов.


    Картинка Peter Kokot.
  • ReactPHP и AmpPHP объединяют силы


    С добавлением файберов в PHP 8.1 можно будет сделать асинхронный код на PHP чуть проще и красивее. Мейнтейнеры двух популярных библиотек для асинхронного PHP объявили о создании проекта RevoltPHP. В рамках него планируют сделать общий ивент луп и удобную абстракцию над файберами.

  • Вышел PhpStorm 2021.2


    В релизе дженерики, перечисления, array shapes, новые инспекции и рефакторинги.
  • PHP 7.4.22, PHP 8.0.9


    Обновления актуальных веток.
  • 4 сентября — PHP fwdays'21 Online


    Совсем скоро пройдёт традиционная конференция от fwdays. Предварительная программа есть на сайте: Temporal, как оптимизировать тесты, про запрет наследования, и прочее.

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

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

PHP Internals


  • [RFC] Unwrap reference after foreach


    В текущих версиях PHP нет выделенного скоупа у циклов foreach. У этого есть очень контринтуитивное следствие: ссылка на значение $value и последний элемент массива остаются даже после завершения цикла foreach.

    Проблему легко проиллюстрировать вот таким примером:
    $array = [0, 1, 2];
    foreach ($array as &$value) { /* ... */ }
    // без вызова unset($value), $value все еще указывает на последний элемент: $arr[2]
    foreach ($array as $value) {
        // $arr[2] каждый раз будет обновляться значениями $array
    }
    var_dump($array);
    
    // До RFC:
    >
    array(3) {
      [0] => int(0)
      [1] => int(1)
      [2] => &int(1)
    }
    
    // После RFC:
    > array(3) {
      [0] => int(0)
      [1] => int(1)
      [2] => int(2)
    }
    

    В данном RFC предлагается исправить это логически правильное, но выглядящее как баг поведение. После цикла foreach ссылка на $value будет убираться.
  • [RFC] Never For Parameter Types


    В PHP 8.1 принят новый тип never для возвращаемых значений. И вот для 8.2 уже поступило предложение использовать never в качестве типа для параметров.

    Тип never, по сути, становится самым базовым типом в иерархии, поэтому автор, Jordan LeDoux, считает, что он будет полезен в абстрактных классах и интерфейсах.

    С помощью него можно указать, что параметр обязательно должен быть как-то типизирован. Например, это может быть удобно для имитации поведения дженериков. Правда придётся прибегнуть к описаниям типов в PHPDoc для статических анализаторов и PhpStorm.
    interface CollectionInterface {
        public function add(never $input): self;
    }
    
    class A implements CollectionInterface {
        public function add(int $input): self {}
    }
    

    Аналогично ведет себя тип never в TypeScript, а в Scala, например, в качестве подобного базового типа используется Nothing.


Инструменты


  • frontdevops/php-evil — Расширение для отключения eval(). Оказывается, eval() – это не функция, а языковая конструкция, поэтому disable_functions не поможет. Автору пришлось написать собственное расширение. Подробнее в статье. Спасибо Пятиминутка PHP за наводку.
  • PHP-CSS-Parser — Парсер CSS-файлов
  • Вышел первый комьюнити-релиз Psalm, выпущенный после ухода основателя проекта.
  • ergebnis/composer-normalize — Плагин для Composer для приведения в красивый вид файла composer.json.
  • paragonie/paseto 2.0 — Stateless-токен, безопасная альтернатива JWT.
  • chrome-php/chrome v1.0.0 — Пакет для работы с chrome/chromium в режиме headless.
  • darsyn/ip — Иммутабельные value object для работы с IP-адресами и хелперы для Doctrine.
  • MadLisp — Интерпретатор Lisp, реализованный на PHP.


Symfony


  • Symfony поддержка теперь доступна в разделе Discussions на GitHub.
  • Централизованный контроль доступа в Doctrine/Symfony.
  • Как использовать каскадное удаление в Doctrine и не потерять все данные.
  • Неделя Symfony #763 (9-15 августа 2021).


Laravel


  • Laravel Idea 4.4 — Большое обновление плагина для PhpStorm.

    Еще Адель теперь ведет отдельный канал в телеграме про плагин @laravel_idea, где делится фичами, над которыми работает сейчас. Там же можно их обсуждать.
  • Laracon Online — Запланирован на 1 сентября.
  • aimeos/aimeos-laravel — Мощный e-com движок на базе Laravel.
  • Создание приложения для масштабирования на Laravel Vapor.
  • video Что нового в Laravel v8.53.0
  • ru Иммутабельные даты в Laravel
  • ru Финальное слово про Laravel Nova


Yii


  • Yii2: Вышел релиз 2.0.43 со множеством исправлений и улучшений.
  • Yii 3: пред-релизная поддержка компаний — Команда отвечает на любые вопросы по фреймворку, собирает пожелания и критику.


Статьи


  • Нам не нужны проверки типов в рантайме — Интересные размышления о развитии типов в PHP от Brent Roose c цитатами от Сары Гоулмон, Расмуса Лердорфа, Никиты Попова.

    А вот еще мнение на эту тему от Joe Watkins:

  • Эволюция объекта в PHP от версии к версии
  • phpschool.io: PHP 8 Appreciate — Консольный воркшоп для изучения PHP 8.
  • habr Строим систему доменных событий в модульном монолите
  • habr If-else-switch
  • habr Перечисления в PHP 8.1
  • habr Отказоустойчивое взаимодействие с внешними сервисами
  • habr Создаем Конечный Автомат на PHP


Аудио/Видео


  • audioru Пятиминутка PHP: Разработка больших проектов на Битрикс — Иван Поддубный из компании Вебпрактик рассказывает про свой опыт разработки крупных проектов на Битрикс и сравнивает с другими фреймворками (Laravel) и стеками технологий.
  • videoru Как делать Code review — Александр Макаров
  • video Event Sourcery Full Course — Вводный курс по CQRS и Event Sourcing.
  • video PHP Roundtable 82 — Возвращение популярного подкаста про PHP. В целом в выпуске просто треп, но есть немного про PHP 8.1 от Sara Golemon.


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

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

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

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

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


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

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

Все главные новости из мира Joomla за осень 2020 и весну 2021, в одной статье.Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla. По...
В этом выпуске выпиливание Realm и создание виджетов, секреты приготовления BLE и уменьшения ANR в шесть раз, вопросы навигации и развития в Android-разработке, подготовка к собеседованию...
В новом дайджесте испорченные десктопы, свой вклад в Swift, безопасность приложений и война Дурова с Apple, качество кода и эволюция приложений, Huawei как лидер рынка и много других ...
Свежая подборка со ссылками на новости и материалы. В выпуске: расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео, п...
Если в вашей компании хотя бы два сотрудника, отвечающих за работу со сделками в Битрикс24, рано или поздно возникает вопрос распределения лидов между ними.