PHP-Дайджест № 181 (18 мая – 1 июня 2020)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Фото Erika Heidi

Свежая подборка со ссылками на новости и материалы. В выпуске: 3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокировке PHP-ML из-за плагиата, почему разработчики ненавидят PHP, порция полезных инструментов, видео и многое другое.

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



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


  • Репозиторий php-ai/php-ml был заблокирован из-за плагиата — Конфликт между авторами двух библиотек машинного обучения для PHP RubixML и PHP-ML, судя по всему, имел давнюю историю. И перешел в активную фазу из-за того, что автор PHP-ML был уличен в копировании нескольких файлов из RubixML.

    Автор PHP-ML опубликовал свою версию событий с подробной хронологией, а также перенес код PHP-ML на GitLab gitlab.com/php-ai/php-ml.

    В комментариях к посту указали на пачку файлов, которые ранее были явно скопированы в обратную сторону: из PHP-ML в RubixML. Так что, кто прав – каждый сделает вывод для себя сам, но если вдруг вы получили DMCA-предупреждение, то действовать стоит очень быстро, иначе репозиторий удалят через 24 часа.

    Кстати, на весь код из ответов на StackOverflow распространяется лицензия CC BY-SA 4.0. Значит ли это, что если вы использовали примеры кода, то ваш код должен быть под этой же лицензией? ¯\_(ツ)_/¯
  • Статистика версий PHP – 2020.1 — Традиционная подборка статистики на основе данных, которые Composer отправляет при подключении к packagist.org. 78% клиентов использует поддерживаемые версии PHP, а доля PHP 5 составляет менее 7%. При этом доля пакетов, у которых в требованиях указана PHP 5, составляет 38%.
  • В PHP 7.4.6 есть ошибка при выполнении yield from для обычного массива. Если вы активно используете генераторы, эту версию лучше пропустить.
  • Стартовала программа раннего доступа (EAP) PhpStorm 2020.2 — В первом билде можно пощупать полную поддержку пул-реквестов GitHub, новый виджет инспекций, и переработанный анализ потока выполнения PHP. Как и всегда, EAP-версию можно использовать бесплатно.
  • Почему разработчики ненавидят PHP.
  • PHP fwdays | Speacial Edition, 6 июня — Дополнительное онлайн-мероприятие от fwdays со звездным составом: Jordi Boggiano, Sebastian Bergmann, Marco Pivetta, Nikita Popov.
    Скидка 15% по коду: phpdigest_fwdays.

PHP Internals


  • check [RFC] Constructor Property Promotion — Предложение принято и в PHP 8 можно будет объявлять свойства прямо в конструкторе
    Скрытый текст
    // Было
    class Point {
        public float $x;
        public float $y;
        public float $z;
    
        public function __construct(
            float $x = 0.0,
            float $y = 0.0,
            float $z = 0.0,
        ) {
            $this->x = $x;
            $this->y = $y;
            $this->z = $z;
        }
    }
    
    // Стало
    class Point {
        public function __construct(
            public float $x = 0.0,
            public float $y = 0.0,
            public float $z = 0.0,
        ) {}
    }
    
    Похожая возможность есть в Hack, TypeScript, Kotlin, Scala. Посмотрим, как приживется в PHP. В комбинации с атрибутами выглядит интересно:
    class Foo {
        public function __construct(
            <<ExampleAttribute>>
            public int $prop,
        ) {}
    }
    
  • check [RFC] Mixed Type v2 — Принят RFC, который добавит тип mixed в PHP 8. Подробнее о плюсах на канале PHP Digest или в посте о новом пcевдотипе mixed.
  • check [RFC] Always available JSON extension — Начиная с PHP 8 расширение JSON будет всегда доступно без возможности исключить из сборки.
  • check [RFC] non-capturing catches — В PHP 8 можно будет не указывать переменную в блоке catch:
    try {
        changeImportantData();
    } catch (PermissionException) {
        echo "You don't have permission to do this";
    }
    
  • [RFC] Error backtraces — В отличие от исключений, ошибки в PHP не предоставляют трейса. Предлагается это исправить. Поскольку для всех ошибок кроме собственно Error трейсы можно реализовать в кастомном обработчике, то, вероятно, эта возможность и будет добавлена только для Error.
  • [RFC] Match expression v2 — Обновленное предложение по вводу нового выражения match, которое работает как switch, но при этом имеет проверку типа и возможность возвращать значение.
    Скрытый текст
    echo match (1) {
        0 => 'Foo',
        1 => 'Bar',
        2 => 'Baz',
    };
    //> Bar
    
    После неудачного голосования была убрана возможность использовать блоки.
  • [RFC] Attribute Amendments — Несколько дополнений к уже принятым атрибутам: возможность группировать <<Attr1, Attr2>>, переименовать PhpAttribute в просто Attribute. Также добавить валидацию на целевую сущность, чтоб можно было указать, что конкретный атрибут можно вешать только на класс/метод/свойство. Кроме того, сейчас один и тот же атрибут можно вешать несколько раз. Предлагается по умолчанию запретить повторения, а если они нужны, то атрибут надо будет объявить еще с атрибутом RepeatableAttribute.

Инструменты


  • pestphp/pest — Обертка над PHPUnit, которая позволяет писать тесты в более простом виде. Есть документация и много видеороликов. Вдохновлена facebook/jest.
  • Moxio/sqlite-extended-api — Реальная демонстрация работы lisachenko/z-engine: пакет предоставляет пару методов API SQLite, которые недоступны в стандартных драйверах PHP.
  • rashidlaasri/travel — Обёртка над Carbon, которая помогает «путешествовать» к определённой дате, что может быть полезно для тестов,
  • FriendsOfPHP/pickle — Менеджер PECL-расширений, который совместим с Composer. Идея отличная, но предыдущий релиз был в 2015 году и вот вышло свежее (минорное) обновление. Будем надеяться, что проект оживет.
  • webdevium/processes — Небольшой пакет для получения списка выполняемых процессов в системе. Работает на любой платформе Windows/*nix.
  • dsuurlant/response2schema — Генерирует спеку OpenAPI на основе JSON-объекта.
  • php-casbin/php-casbin — Библиотека авторизации, которая поддерживает модели управления доступом ACL, RBAC, ABAC.

Symfony


  • Symfony 5.1
  • В Symfony заменили требование версии PHP с "^7.x" на ">=7.x" в composer.json — Изменение вызвало волну обсуждений в Твиттере.
  • Неделя Symfony #700 (25-31 мая 2020)

Laravel


  • spatie/laravel-multitenancy — Пакет для реализации мультисайта. Вводный блогпост. Стрим с обзором.
  • spiral/roadrunner-laravel — Официальный пакет от Spiral для запуска Laravel под RoadRunner.
  • Избегаем наследования в Laravel.
  • videoru Laravel Livewire — Камень, ножницы, бумага — Серия скринкастов от Пятиминутки PHP с обзором Laravel Livewire.

Async PHP


  • clue/reactphp-zlib — Потоковое сжатие и распаковка GZIP, ZLIB и DEFLATE с помощью ReactPHP. Вводный блогпост.

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


  • Что нового в PHP 8.
  • Обзор атрибутов в PHP 8.
  • PHP 8 в восьми кусочках кода.
  • PHP 7.4 в семи кусках кода.
  • Принцип подстановки Лисков в PHP.
  • О фантомных типах на примере введения типа Id.
  • Как лучше делать имена для событий: строки, константы или имена классов.
  • ru Экспорт в Excel просто, быстро и красиво.
  • Чистая архитектура на PHP. Как её измерять и контролировать?

Аудио/Видео


  • audio PHP Internals News #55 — С Ignace Nyamagana Butera об обработке ошибок в PHP-проектах.
  • audio PHP Internals News #54 — C Gabriel Caruso про его RFC Ensure correct signatures of magic methods, который перешел на стадию голосования, и, вероятно, будет принят.
  • audioru Между скобок № 8: Олег Скляров — Наставничество в IT.
  • videoru PHP + Vulkan — Стримы от SerafimArts про использование FFI.
  • videoru 3-й онлайн PHP-митап — Видеозапись стрима.

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

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

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

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

Источник: https://habr.com/ru/post/504734/


Интересные статьи

Интересные статьи

Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Не думаю, что для самих медиков это праздничная акция. И, к сожалению, пока кроме «Спасибо медикам» ничего полезного не сделал. Хабр наверное может помочь с любыми компьютерным...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
16 июня в нашем офисе прошёл очередной митап всех любителей сделать что-нибудь своими руками с помощью паяльника, молотка и энтузиазма. И для всех, кто не смог побывать на митапе, мы выложили...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.