Pull to refresh

PHP-Дайджест № 149 (28 января – 11 февраля 2019)

Reading time4 min
Views15K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHPUnit 8 и другие релизы, PSR-14 и PSR-12 в стадии ревью, JIT для PHP, стартовала работа над PHP 8, пачка свежих RFC из PHP Internals, порция полезных инструментов, и многое другое.

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



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



PHP Internals


  • Создана ветка PHP-7.4, а master репозитория PHP теперь нацелен на PHP 8.0. Это значит, что работа над PHP 8.0 уже стартовала, а PHP 7.4 будет разрабатываться параллельно. Так, в PHP 8 уже удалена целая пачка устаревших возможностей.
  • [RFC] JIT — Старая идея с JIT в PHP наконец-то нашла реализацию благодаря усилиям Дмитрия Стогова. JIT реализован как независимая часть OPcache, и может быть включён/выключен даже в рантайме. В качестве целевой версии рассматривается PHP 8, но возможно включение уже в PHP 7.4 в виде экспериментальной отключенной по умолчанию фичи. По бенчмаркам Никиты Попова JIT даёт прирост 30% для PHP-Parser и около 5% для amphp/http-server. На данный момент нет поддержки Windows, что вызывает споры в Internals.
    А тем временем уже можно попробовать PHP+JIT с помощью Docker образов (спасибо @dmitrybalabka). Также в тему отличный пост о том, что значит JIT для пользователей PHP.
  • [RFC] Consistent type errors for internal functions — Еще один RFC от Никиты Попова. Предлагается сделать так, чтоб в PHP 8 все встроенные функции бросали TypeError когда переданы параметры неверного типа вместо ворнингов и возвращения null.
    Скрытый текст
    Вместо:
    var_dump(strlen(new stdClass));
    // Warning: strlen() expects parameter 1 to be string, object given
    // NULL
    

    Будет:

    declare(strict_types=1);
    var_dump(strlen(new stdClass));
    // TypeError: strlen() expects parameter 1 to be string, object given
    

  • [RFC] RFC Workflow & Voting (2019 update) — Попытка несколько ужесточить голосование по RFC и бюрократизировать процесс встретила бурю критики в Internals. Настолько, что появились альтернативные предложения. Свой же вариант Зеев Сураски пообещал переработать и учесть критику.
  • [RFC] Weak References — Предлагается добавить класс WeakReference для реализации слабых ссылок, что позволит разработчику сохранить ссылку на объект, при этом не предотвращая его удаления сборщиком мусора. Это может быть особенно полезно для всякого рода кэшей.
  • [RFC] Allow void return type variance — Предложение реализовать возможность переопределять возвращаемый тип void в методах наследника. Появилось по следам изменения сигнатуры метода setUp() и нескольких других в PHPUnit 8.
    Скрытый текст
    class Foo {
        function method1 (): void  {}
        function method2 ()        {}
    }
     
    class Bar extends Foo {
        function method1 (): array { return []; }
        function method2 (): array { return []; }
    }
     
    class Baz extends Foo {
        function method1 ()        { return 42; }
        function method2 ()        { return 42; }
    }
    
  • [RFC] Mixed typehint — А здесь предлагается добавить тайпхинт mixed. Это позволит указать, что функция может принимать (или возвращать) значения разных типов.
  • [RFC] Annotations 2.0 — Черновик предложения по полноценным аннотациям. Ранее уже были попытки реализовать простые аннотации и атрибуты. Тем временем можно использовать отличный плагин для аннотаций в PhpStorm.

Инструменты



Symfony



Laravel



Yii



Async PHP



CMS



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



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

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

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

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

Tags:
Hubs:
+59
Comments19

Articles

Change theme settings