PHP-Дайджест № 177 (23 марта – 6 апреля 2020)

от автора

Свежая подборка со ссылками на новости и материалы. В выпуске: расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео, подкасты и многое другое.

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

PHP Internals

  • Опубликовано Расписание релиза PHP 8 — Первая альфа ожидается 18 июня, а финальный релиз 3 декабря. Подробнее.
  • [RFC] Constructor Property Promotion — Ларри Гарфилд опубликовал подробный анализ эргономики объектов в PHP, в котором делает вывод, что лучше всего было бы сфокусировать на 3х RFC: Constructor Promotion, Named parameters, Compound Property Visibility (раздельное указание модификаторов доступа для чтения и записи {public get, private set}).
    И вот по следам анализа, в данном RFC предлагается разрешить объявлять свойства прямо в конструкторе:
    Вместо такого

    class Point {     public float $x;     public float $y;     public float $z;      public function __construct(         float $x = 0.0,         float $y = 0.0,         float $z = 0.0     ) {         $this->x = $x;         $this->y = $y;         $this->z = $z;     } } 

    Можно будет писать:

    class Point {     public function __construct(         public float $x = 0.0,         public float $y = 0.0,         public float $z = 0.0     ) {} } 
  • [RFC] Allow trailing comma in parameter list — Ну и в дополнение к предыдущему, предлагается разрешить использовать запятую после последнего параметра в определении функции. Для списка аргументов при вызове функции это уже работает начиная с PHP 7.3.
    Скрытый текст

    class Uri {     private function __construct(         ?string $scheme,         ?string $user,         ?string $pass,         ?string $host,         ?int $port,         string $path,         ?string $query,         ?string $fragment // <-- ARGH!     ) {         ...     } } 
  • [RFC] Stricter type checks for arithmetic/bitwise operators — Этот RFC предлагает выдавать ошибку TypeError, когда арифметический или побитовый оператор применяется к массиву, ресурсу или объекту.
    var_dump([] % [42]); // int(0) // WTF? 
  • [RFC] Switch expression — Предлагается разрешить использовать switch в качестве выражения, а не только как управляющую конструкцию:
    $expressionResult = switch ($condition) {     1 => foo(),     2 => bar(),     3, 4, 5 => baz(), }; 

    Также RFC предлагает разрешить перечисление возможных значений в секциях case: case 3, 4, 5: break; вместо case 3: case 4: case 5: break;.

  • [RFC] Type casting in array destructuring expressions — Предлагается сделать возможным использование приведения типов при деструктурировании массивов:
    [(int) $now, (int) $future] = ["2020", "2021"];  // По сути то же, что и [$now, $future] = ["2020", "2021"]; $now = (int) $now; $future = (int) $future; 

    Николас Грекас в Твиттере приводит примеры возможного использования такой функциональности, а именно имитации именованных параметров:

    ...[int $i] = ['a' => '123'];  function foo(...[int $i]) { }  foo(['a' => '234']); 

    и быстрого объявления типизированных вложенных структур:

    $var = (Foo) [     'a' => 123,     'b' => (Bar) [         'c' => // ...     ], ]; 
  • Отклонены по результатам голосования: Server-Side Request and Response Objects, Userspace operator overloading, Write-Once (readonly) Properties.

Инструменты

  • TitasGailius/terminal — Красивая обёртка над symfony/process для запуска внешних команд из PHP.
  • rlanvin/php-ip — Библиотека для работы с IPv4/IPv6 на PHP, вдохновлённая ipaddress из Python.
  • ramsey/collection — Реализация коллекций вдохновлённая Java.
  • clue/graph-composer — Инструмент визуализирует связи между composer-пакетами вашего проекта.

Symfony

Laravel

Yii

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

Аудио/Видео

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

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

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

Прислать ссылку
Поиск ссылок по всем дайджестам
Предыдущий выпуск: PHP-Дайджест № 176

ссылка на оригинал статьи https://habr.com/ru/post/495838/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *