PHP-Дайджест № 163 (12 – 26 августа 2019)


    Свежая подборка со ссылками на новости и материалы. В выпуске: 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

    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 12

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

        По поводу 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.
          +8
          Про P-- и P=== отлично по-моему! :)

          Хорошо, что далеко не зашли с этим.
            0
            inertiajs/inertia-laravel — прикольная штука, кто-нибудь пробывал?
              +1

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

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

                Скрин
                image

                Похоже, что из веток 7.2 и 7.3 это изменение выпилили (видимо, где-то в 7.3 это то же было, но не факт, что ушло в релиз):

                github.com/php/php-src/commit/22ed362810c1b3a5ecb54ebd1d50d804c7fc3159

                Жизнь с 7.4 может осложниться.
                  0

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

                    0
                    Из-за этой ошибки пришлось переписывать свой Dockerfile с жестким указанием PHP 7.2.19, а не 7.2. При этом начало стрелять внезапно и сразу не понятно почему.
                      0
                      Может потому, что Docker кэширует образы, и у вас какое-то время висел старый образ? Потом в определенный момент (к примеру после изменения Dockerfile) он тянет новый образ, там оказывается 7.2.20, и приехали. Мы этот цирк имеем сравнительно регулярно.
                  0
                  Про Laravel 6 не написали, уже превью появилось
                    0
                    3 сентября уже выходит в свет! Плюс она будет LTS, на текущий момент LTS считается версия 5.5.
                    Release Notes Laravel 6.0

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

                    P.P.S. Еще недавно laravel.com поменял свой дизайн.
                    Кому лень переходить и смотреть, вот фотка

                    0

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

                    Only users with full accounts can post comments. Log in, please.