Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 beta 4, о судьбе P++, видео, подкасты, анонсы митапов и конференций, порция полезных инструментов, и многое другое.

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



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



PHP Internals


  • Straw poll for P++ feasibility — Больше двух недель назад Зеев Сураски вынес на обсуждение провокационную идею создать новый язык на базе PHP под кодовым названием P++. В ответ было множество споров в Internals и не только, отличный обзор истории PHP и нюансов, а также пост о том, почему P++ плохая идея с нетехнической точки зрения.
    Кто-то даже предложил сделать P-- – упрощённый PHP времён PHP 5.0, ну или P=== – просто оставить как есть.
    К счастью, пока всё не зашло слишком далеко, Derick Rethans (автор Xdebug) запустил голосование с одним простым вопросом: Осуществима ли идея P++ в принципе? Всё сообщество PHP Internals единогласно проголосовало против, неожиданно включая самого Зеева. На этом идею можно P++ можно забыть.
  • [RFC] Deprecate short open tags, again — Множество контрибьюторов высказались против удаления коротких тегов из PHP в обозримой перспективе, и повторное голосование не преодолело необходимый порог. Итого короткие теги останутся ещё на 5+ лет.
  • [PoC] throw_legacy_failure declare statement — Интересный PR в PHP с концептом переделки всех встроенных функций, с тем чтобы они бросали исключения вместо возращения false / null. Данная возможность включается указанием директивы declare(throw_legacy_failure=1).

Инструменты


  • drupol/collection — Легковесный пакет для работы с коллекциями, вдохновлённый illuminate/support и lazy.js.
  • quasilyte/phpgrep — Инструмент для поиска по PHP-коду – как grep, только с «пониманием» синтаксиса PHP. Реализован на Golang и вдохновлён mvdan/gogrep. Аналог SSR в PhpStorm.
  • voku/portable-utf8 — Библиотека для работы с UTF-8 строками без зависимостей от расширений типа mbstring или iconv.
  • jasny/switch-route — PHP-разработчики никогда не писали роутеры /s и вот один реализован на основе switch-конструкций. Бенчмарки.
  • franzose/gimme-url — Генератор ссылок для thephpleague/route. Прислал franzose.
  • brick/varexporter — Альтернатива стандартной var_export() с возможностью экспорта замыканий и объектов без вывода __set_state().
  • ivopetkov/html5-dom-document-php — Улучшенный парсер HTML5. Расширяет и дополняет оригинальный DOMDocument.

Symfony



Laravel



Yii



Async PHP



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



Аудио/Видео



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

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

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

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

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


  1. yehors
    26.08.2019 09:43
    +1

    По-моему, throw_legacy_failure declare statement это must have для будущих версий.


  1. berezuev
    26.08.2019 09:46
    +2

    По поводу beta 3 official_php в твиттере все объяснили :)


    Let's see now…
    First beta => 2 ** 0 => beta1
    Second beta => 2 ** 1 => beta2
    Third beta => 2 ** 2 => beta4

    Yep, math checks out.


  1. voidMan
    26.08.2019 09:53
    +1

    Про P-- и P=== отлично по-моему! :)

    Хорошо, что далеко не зашли с этим.


  1. zhulan0v
    26.08.2019 10:42

    inertiajs/inertia-laravel — прикольная штука, кто-нибудь пробывал?


  1. BoShurik
    26.08.2019 11:56

    Вот еще интересная issue в Symfony/php 7.4
    https://github.com/symfony/symfony/issues/32995
    В новое версии php стал бросать Fatal error, если не найден родительский класс/интерфейс
    https://3v4l.org/uh8ae


    1. arkamax
      26.08.2019 18:57

      Я так понимаю, что в случае 7.4 исключения, брошенные автозагрузчиком, конвертируются в Fatal Error, т.е. catch(\Exception $e) это не отловит. Но так поступает не только 7.4, но еще и (внезапно) 7.2.20, НО не 7.2.19 и не 7.3.х — т.е. это ломает обратную совместимость в минорном релизе 7.2.20.

      Скрин
      image


      1. BoShurik
        26.08.2019 19:03

        В 7.2.21 это изменение откатили как раз по этой причине


      1. evgwed
        27.08.2019 17:26

        Из-за этой ошибки пришлось переписывать свой Dockerfile с жестким указанием PHP 7.2.19, а не 7.2. При этом начало стрелять внезапно и сразу не понятно почему.


        1. arkamax
          27.08.2019 17:55

          Может потому, что Docker кэширует образы, и у вас какое-то время висел старый образ? Потом в определенный момент (к примеру после изменения Dockerfile) он тянет новый образ, там оказывается 7.2.20, и приехали. Мы этот цирк имеем сравнительно регулярно.


  1. snake302
    26.08.2019 16:09

    Про Laravel 6 не написали, уже превью появилось


    1. evgwed
      27.08.2019 17:17

      3 сентября уже выходит в свет! Плюс она будет LTS, на текущий момент LTS считается версия 5.5.
      Release Notes Laravel 6.0

      P.S. Кому интересно, вот хороший release note на русском от Dmitry Afanasyev (ссылка)

      P.P.S. Еще недавно laravel.com поменял свой дизайн.

      Кому лень переходить и смотреть, вот фотка


  1. ford153focus
    27.08.2019 00:03

    P++ как отдельный язык — явно лишнее, но всё же надеюсь, что PHP будет идти в сторону строгой статической типизации с опциональной динамикой и в сторону AOT-компиляции