Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 RC3, поддержка Composer-зависимостей на GitHub, обновление стандартов PSR, RFC предложения из PHP Internals и о координации проекта PHP, порция полезных инструментов, подкасты, митапы, и многое другое.

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



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



PHP Internals


  • [RFC] Object Initializer — Предлагается реализовать синтаксис быстрой инициализации объектов:
    Скрытый текст
    class Car
    {
      public int $yearOfProduction;
      public string $vin;
    }
    
    $car = new Car {
      yearOfProduction = 2019,
      vin = "1FTFW1CVXAFD54385",
    };
    
    $car = new Car {
      yearOfProduction = 2019,
    }; // throws RuntimeException: Initialization of Car class object failed due to missing required properties
    
    Коротко о предложении в посте автора и подробнее в подкасте audio PHP Internals News #30 с ним же.
  • [RFC] Reclassifying engine warnings — Бросаемые нотисы и ворнинги в движке PHP были пересмотрены и по результатам голосования в PHP 8.0 имеем:
    • Переменная не определена: будет бросаться Warning;
    • Обращение к несуществующему индексу в массиве: Warning;
    • Деление на ноль: Исключение, а также будет добавлена функция fdiv(), допускающая деление на ноль;
    • Невалидный аргумент в foreach(): Warning;
    • И все остальные изменения прошли голосование и приняты.
    Подробнее в подкасте audio PHP Internals News #29 c Никитой Поповым.
  • Координация проекта PHP — Пока в Internals разгорались драмы, кое-что хорошее тоже было. Dan Ackroyd создал документ, в котором описаны актуальные задачи и обсуждения проекта. Если вы хотели бы помочь PHP, но не знаете как – этот документ хорошая отправная точка.

Инструменты


  • cycle/orm — Мощная ORM, которую можно использовать и как DataMapper и в стиле ActiveRecord. Доступна подробная документация.
  • ssx/skrub — Пакет для удаления ненужных файлов в зависимостях, может быть полезно для уменьшения Docker-образов.
  • squizlabs/PHP_CodeSniffer 3.5.0 — Обновление c полной поддержкой стандарта PSR-12.
  • infection/infection 0.14.0 — Фреймворк для мутационного тестирования. В новой версии 3 новых мутатора, улучшена производительность, снижено потребление памяти, и другие улучшения.
  • solodkiy/mysql-error-parser — Библиотека для разбора ошибок MySQL. Прислал doctorx.
  • alecrabbit/php-console-spinner — Красивые консольные спиннеры.

Symfony



Laravel



Yii



Async PHP



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



Аудио/Видео



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


  • ElePHPant.me — Сайт для обмена слониками.

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

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

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

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

Комментарии (8)


  1. laskevych
    07.10.2019 12:07
    -1

    Спасибо! Хорошее оформление и ценная информация :)


  1. franzose
    07.10.2019 18:46

    [RFC] Object Initializer

    Судя по голосованию, его не приняли. Хотя синтаксис интересный.


    1. TPbIHTPABA
      07.10.2019 22:03
      +2

      Синтаксис прямиком из C#


    1. bm13kk
      09.10.2019 13:31
      +1

      предложение as is не сильно интересно и я понимаю разработчиков ядра.

      1) Есть большая проблема — бойлерплейт для DI. Это предложение от него не спасает.

      Какие именно проблемы решает это предложение (кроме ДИ) — я не понимаю. Так как примеры из самого предложения отлично решаются паттерном билдер и текучим синтаксисом.

      2) Есть классный синтаксический вариант — контекст. Когда пишешь `Math {x plus y; foo more bar}`. И имеется в виду `math.plus()` и `math.more()`. По количеству работы — тоже самое. По применимости — космос по сравнению с этим предложением.

      То есть слишком большая цена (кода в ядре и новых веток парсера) при незначительной выгоде.


      1. SerafimArts
        09.10.2019 00:44

        А теперь предлагаю посмотреть на код какого-нибудь JavaScript и количество вызовов структур вида {key: value}. В PHP аналогичным способом используются массивы ['key' => $val].


        Единственное отличие от описанных выше структур — это добавление типизации. Т.е. связь этих аморфных структур с классом. Т.е. не будет никаких аморфных километровых массивов, а набор строго определённых структур.


        Так что, имхо, принятие этого RFC создало бы эффект разорвавшейся бомбы для типизации DTO, настолько подобной конструкции не хватает в языке и настолько она нужна.


        P.S. В качестве альтернативной реализации можно было бы реализовать каст к классам, вроде:


        class ExampleClass
        {
            public string $key;
        }
        
        $object = (ExampleClass)['key' => $val];


    1. yvm
      09.10.2019 07:32

      Только не понятно зачем new в такой инициализации.


  1. im_special_one
    09.10.2019 09:01

    очень круто что есть список ближайщих событий!


    1. griven
      09.10.2019 11:40

      спасибо большое за расписание