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

в 8:24, , рубрики: laravel, php, PHP 8, php-дайджест, symfony, yii, дайджест, Разработка веб-сайтов

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

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

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

PHP-Дайджест № 186 (3 – 17 августа 2020) - 2 Новости и релизы

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

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

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

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

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

    @@ORMEntity
    @@ORMTable("user")
    class User
    {
        @@ORMId @@ORMColumn("integer") @@ORMGeneratedValue
        private $id;
    
        @@ORMColumn("string", ORMColumn::UNIQUE)
        @@AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])
        private $email;
    }
    
    #[
      ORMEntity,
      ORMTable("user")
    ]
    class User
    {
        #[ORMId, ORMColumn("integer"), ORMGeneratedValue]
        private $id;
    
        #[ORMColumn("string", ORMColumn::UNIQUE)]
        #[AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])]
        private $email;
    }
    
    @[
      ORMEntity,
      ORMTable("user")
    ]
    class User
    {
        @[ORMId, ORMColumn("integer"), ORMGeneratedValue]
        private $id;
    
        @[ORMColumn("string", ORMColumn::UNIQUE)]
        @[AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])]
        private $email;
    }
    
    <<
      ORMEntity,
      ORMTable("user")
    >>
    class User
    {
        <<ORMId, ORMColumn("integer"), ORMGeneratedValue>>
        private $id;
    
        <<ORMColumn("string", ORMColumn::UNIQUE)>>
        <<AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])>>
        private $email;
    }
    
    @:ORMEntity
    @:ORMTable("user")
    class User
    {
        @:ORMId @:ORMColumn("integer") @:ORMGeneratedValue
        private $id;
    
        @:ORMColumn("string", ORMColumn::UNIQUE)
        @:AssertEmail(["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 — Отклонен.

PHP-Дайджест № 186 (3 – 17 августа 2020) - 5 Инструменты

  • 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 — Легковесные коллекции.

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

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

PHP-Дайджест № 186 (3 – 17 августа 2020) - 12 Материалы для обучения

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

PHP-Дайджест № 186 (3 – 17 августа 2020) - 30 Занимательное


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

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

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

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

Автор: Роман Пронский

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js