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]
:Скрытый текст@@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 { <
> private $id; < > < "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 — Документ был переделан и теперь вместо переименования параметров предлагает лишь явно указывать, что данный параметр именованный.
Поскольку PHP 8 уже заморожен для новых фич, то данное предложение возможно только в 8.1, да и то маловероятно.// Именованный параметр включен явно 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.
- [Proposal] Bigint shorthand (123n) for GMP objects — Интересное предложение пока без официального RFC.
Предлагается реализовать в PHP синтаксис для больших чисел аналогичный JavaScript с добавлением в конце суффикса «n»:
$theBiggestInt = 9007199254740991n
При этом под капотом будет использоваться GMP. А поскольку для объектов GMP уже перегружены арифметические операторы, а также битовые и сравнения, то работа с такими числами будет прозрачной. - В рамках дискуссии на тему улучшения интерактивного шелла PHP (
php -a
), предложен PR, который позволит задавать колбэк отрабатывающий на вывод из интерактивного шелла. Или пока можно использовать bobthecow/psysh. - [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