PHP-Дайджест № 133 (10 – 24 июня 2018)


    Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0 Alpha 2, о планах на PHP 8.0, Typed Properties и другие RFC из PHP Internals, порция полезных инструментов, и многое другое.
    Приятного чтения!


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



    PHP Internals


    • [RFC]: Typed Properties 2.0 — Большое и очень детальное предложение от Никиты Попова и Bob Weinand по реализации типизированных свойств. Ранее уже была попытка реализовать данную возможность, но предложение не прошло порог в 2/3 голосов. В текущем документе адресованы 2 ключевые проблемы прошлой реализации: поддерживаются типы для статических свойств, и ссылки на типизированные свойства. Поэтому на этот раз есть все шансы пройти голосование. Соответствующий пул-реквест уже готов.
      Открытым остается вопрос версии: на данный момент рассматривается PHP 7.3, но если возникнут трудности, то, возможно, будет отложено до 7.4 (8).
      Скрытый текст
      class Example {
          // All types with the exception of "void" and "callable" are supported
          public int $scalarType;
          protected Type $type;
          private ?Type $nullableType;
       
          // Types are also legal on static properties
          public static iterable $staticProp;
       
          // Types can also be used with the "var" notation
          var bool $flag;
       
          // Typed properties may have default values (more below)
          public string $str = "foo";
          public ?string $nullableStr = null;
       
          // The type applies to all properties in one declaration
          public float $x, $y;
          // equivalent to:
          public float $x;
          public float $y;
      }
      
    • [RFC] Deprecate and Remove Case-Insensitive Constants — C помощью define() можно определить константу нечувствительную к регистру. Предлагается убрать данную возможность.
    • [RFC] Deprecate and remove continue targeting switchcontinue внутри switch ведет себя как break, хотя в других языках это не так. Предлагается исправить поведение.
    • strict switch — Sara Golemon в качестве идеи предложила реализовать строгий switch:
      Скрытый текст
      switch ($a) {
        case FOO:
            // Works exactly as current behavior.
            break;
        case == FOO:
           // Nearly identical, though we don't use the ZEND_CASE optimization.
           // Can probably make this equivalent to `case FOO`, but it felt like an interesting direction.
           break;
        case === FOO:
           // Only triggers if `$a === FOO`, no type juggling
           break;
      }
      

    Инструменты


    • spiral/roadrunner — Высокопроизводительный продакшн-реди сервер приложений, балансировщик нагрузки и менеджер процессов для PHP реализованный на Go.
    • slince/spike — Реверс-прокси на PHP (ReactPHP) для раскрытия локальных проектов в публичный интернет. Аналог ngrok.io.
    • spatie/async — Обертка над PCNTL для простого выполнения параллельных задач.
    • RSS-Bridge/rss-bridge — RSS-фид для сайтов у которых его нет, из коробки 150+ адаптеров.
    • DragonBe/hibp — Проверяет с помощью haveibeenpwned.com был ли скомпрометирован пароль.
    • nunomaduro/collision — Крутые отчеты об ошибках для консольных приложений. Из коробки работает с Laravel, есть адаптер для Symfony.
    • API-Skeletons/zf-doctrine-graphql — GraphQL для Doctrine с помощью гидраторов.


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




    Аудио и видеоматериалы



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

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

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

    • +60
    • 11,7k
    • 6
    Zfort Group 254,81
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 6
      +1
      будут добавлены JIT, FFI, и, вероятно, возможности для реализации асинхронных и долгоживущих приложений.

      Судя по описанию FFI — очень крутая штука, не нужно будет писать новый экстеншн и перекомпилировать его при каждом изменении, а достаточно будет только вызывать нужный код на си.
      <?php
      $p = FFI::new("struct {int x,y;} [2]");
      $p[0]->x = 5;
      $p[1]->y = 10;
      var_dump($p);
        0
        Команда php добилась каких-либо результатов в jit по улучшению производительности или улучшений на будущее, чтоб выпускать 8 версию?

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое