PHP-Дайджест № 186 (3 – 17 августа 2020)

от автора

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 1, снова о синтаксисе атрибутов в PHP 8: #[Attr] vs @[Attr], предложение по синтаксису для BigInt, обзоры PHP 8 и много других видео, инструменты, стримы, подкасты.

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

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

PHP Internals

  • [RFC] Shorter Attribute Syntax Change — История с синтаксисом атрибутов в PHP 8 продолжается. О финальном голосовании было в канале, но позже оно было приостановлено из-за того, что не был соблюден регламент по 2х-недельному обсуждению.

    Tycon Andre привел примеры, не очень удачного поведения варианта #[Attr] в PHP 7. C другой стороны, какая разница, если остальные варианты просто отвалятся с ошибкой парсинга?

    И сравнение синтаксисов @@Attr, #[Attr], <<Attr>> и @[Attr]:

    Скрытый текст

    @@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; }  #[   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; }  @[   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; }  <<   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; }  @: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; } 
  • [RFC] Named Parameters explicit opt in — Документ был переделан и теперь вместо переименования параметров предлагает лишь явно указывать, что данный параметр именованный.
    // Именованный параметр включен явно function callBar(Foo $:parameterName) {     $internalName->bar(); }  $x = new Foo(); callBar(parameterName: $x);  // Параметр не именованный function callBar($externalName) {     $externalName->bar(); }  $x = new Foo(); callBar(externalName: $x); // Error: cannot call function callBar() using parameter $externalName by name. 

    Поскольку PHP 8 уже заморожен для новых фич, то данное предложение возможно только в 8.1, да и то маловероятно.

  • [Proposal] Bigint shorthand (123n) for GMP objects — Интересное предложение пока без официального RFC.

    Предлагается реализовать в PHP синтаксис для больших чисел аналогичный JavaScript с добавлением в конце суффикса «n»:

    $theBiggestInt = 9007199254740991n

    При этом под капотом будет использоваться GMP. А поскольку для объектов GMP уже перегружены арифметические операторы, а также битовые и сравнения, то работа с такими числами будет прозрачной.

  • В рамках дискуссии на тему улучшения интерактивного шелла PHP (php -a), предложен PR, который позволит задавать колбэк отрабатывающий на вывод из интерактивного шелла. Или пока можно использовать bobthecow/psysh.
  • cross [RFC] PHP Namespace Policy — Отклонен.

Инструменты

  • PHPUnit 9.3 — C поддержкой PHP 8 и Xdebug 3.
  • sebastianbergmann/cli-parser — Микропакет для парсинга аргументов командной строки, выделенный из PHPUnit.
  • coduo/php-matcher — Валидация данных по паттернам для тех, кто не хочет в регекспы.
  • phpfn/phpfn — Функциональные примитивы от SerafimArts.
  • hidehalo/nanoid-php — PHP-реализация Nanoid — безопасного URL-совместимого генератора уникальных идентификаторов.
  • woohoolabs/zen — Простой PSR-11-совместимый контейнер с генератором файла предзагрузки.
  • loophp/collection — Легковесные коллекции.

Symfony

Laravel

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

Аудио/Видео

Занимательное


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

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

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

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

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


Комментарии

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

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