PHP-Дайджест № 191 (19 октября – 2 ноября 2020)

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Фото: Валерий Горбачев (PHP Krasnodar)

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 3 и видеообзоры новых возможностей, Composer 2, завершение разработки Faker (теперь в новой организации), два новых RFC для PHP 8.1, порция полезных инструментов, статьи, видео с прошедших митапов.

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



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


  • PHP 8.0 RC 3 — Предпоследний релиз-кандидат перед финальным выпуском. RC 4 ожидается 12 ноября и сам релиз уже 26 ноября.

    Свежие материалы по PHP 8:
    • video Серия видеороликов по всем новым фичам от Spatie. Также выложен на YouTube.
    • Отличный обзор изменений с интерактивными демо от Marcel Pociot. Есть перевод: habr PHP 8 — пробуем новые возможности.
    • video Видеокурс по новым фичам от Marcel Pociot и BeyondCode.
    • Обновление серии постов от Larry Garfield: Weak maps, FFI, JIT.
    • Самые частые ошибки совместимости с PHP 8.0 и как их исправить.
  • В PhpStorm 2020.3 будут доступны кастомные атрибуты для PHP 8: #[ArrayShape], #[ExpectedValues], #[NoReturn], #[Pure], #[Deprecated], #[Immutable]. Причем #[ArrayShape] и #[Immutable] будут работать даже с более ранними версиями PHP.
  • PHP 7.4.12
  • PHP 7.3.24
  • Composer 2 — В этом мажорном релизе:
    • улучшена производительность благодаря параллельному скачиванию и установке пакетов и куче других оптимизаций;
    • более понятное описание ошибок при разрешении зависимостей;
    • в скрипт автозагрузки добавлен шаг проверки версии PHP и расширений (отключается добавлением "platform-check": false);
    • --dry-run флаг для require и remove – тестовый прогон команды, чтоб увидеть, что будет в итоге;
    • --unused флаг для remove поможет удалить ненужные зависимости из vendor, которых нет в composer.json (типа purge);
    • и много другого.

    Подробнее об изменениях можно почитать на php.watch или чуть короче в переводе на Хабре.

    Чтобы обновиться на новую версию, достаточно запустить: composer self-update --2.
  • Закат PHP Faker — В PR по поддержке PHP 8 в библиотеке fzaninotto/Faker поднялся спор о том, как развивать библиотеку. В ответ автор Francois Zaninotto объявил о том, что пакет можно считать завершенным и новых релизов не будет. Передавать репозиторий другой команде он не хотел, поэтому вскоре был создан форк fakerphp/Faker, который уже совместим с PHP 8 и не поддерживает PHP 5.

    Передавать права François Zaninotto не хотел, во-первых, потому что хочет оставить проект с 25k+ звезд на своем аккаунте. А во-вторых, потому что в прошлом был автором популярной ORM Propel. Контроль над ней он передал другому разработчику, который совершил единственную худшую стратегическую ошибку решив переписать все с нуля. Прошло 7 лет и стабильная версия Propel 2 до сих пор не вышла. Хотя это и не мешает использовать альфа-версии.

    Спасибо François за 9 лет работы над Faker.
  • PHP Russia 2020 -> PHP Russia 2021 — Конференцию перенесли на 1 марта 2021 года.
  • phpcommunity.ru — PHP-сообщества в России, Беларуси, Украине.

    Ближайшие митапы: Калининград, 4 ноября; Краснодар, 7 ноября; Нижний Новгород, 14 ноября.

PHP Internals


  • [RFC] Short Functions — В этом RFC предлагается добавить синтаксис стрелочных функций для однострочных именованных функций и методов.
    class Person
    {
        public function __construct(
            private string $firstName,
        ) {}
        public function getFirstName(): string => $this->firstName;
    }"
    
  • [RFC] Explicit octal integer literal notation — В PHP шестнадцатеричные числа записываются с префиксом 0x, а двоичные с 0b. Восьмеричные же сейчас выбиваются из ряда и записываются с префиксом 0. Кроме неконсистентности, это может привести к проблемам при нестрогом сравнении с числовой строкой. Например, 016 в десятичном представлении равно 14 и в результате "016" == 016; // false.

    Предлагается для восьмеричных чисел разрешить нотацию с префиксом 0o, которая является стандартом и используется во многих других языках.
    0o16 === 14; // true
    016 === 0o16; // true
    "016" == 0o16; // false
    
  • Literal types PoC — Концепт литерального типа для PHP как в TypeScript.
    function foo(): "foo"|"bar" {
        return "foo";
    }
    

    Литеральный тип вряд ли будет реализован в PHP, но вот есть черновик RFC с предложением алгебраического типа данных, т. е. продвинутых перечислений.

Инструменты


  • Infection PHP 0.20 — В свежем обновлении фреймворка для мутационного тестирования добавлено 8 новых мутаторов и возможность автоматически добавлять комментарии прямо в PR на GitHub.
  • JustSteveKing/php-sdk — Скелет для разработки PHP SDK для сервисов и API.
  • Hi-Folks/rando-php — Хелпер для генерирования псевдослучайных данных с различными фильтрами: $randomChars = Randomize::sequence()->chars()->count(10)->noDuplicates()->generate();
  • voku/PHPDoctor — Проверяет файлы и директории и находит места, где не хватает деклараций типов.
  • Psalm 4 — Обновление популярного статического анализатора.
  • phpDocumentor v3.0.0 — Мажорное обновление инструмента для генерирования документации на основе PHPDoc.

Symfony


  • A/B тесты на Symfony с помощью travaux-com/VariantRetriever.
  • Неделя Symfony #722 (26 октября — 1 ноября 2020)
  • Удаленное выполнение кода (RCE) на Symfony сайтах — Разбор эксплуатации уязвимости через выполнение запроса /_fragment и слабого/дефолтного секрета.

Laravel


  • jessarcher/laravel-castable-data-transfer-object — Автоматически преобразовывает JSON-поля в DTO. Подробнее в посте.
  • Collector — Плагин для PhpStorm для рефакторинга стандартных функций PHP в методы коллекций Laravel.
  • spatie/laravel-route-attributes — Позволяет описывать роуты с помощью атрибутов из PHP 8.
  • Нестандартный Laravel — Несколько статей с идеями по улучшению кода.
  • habr Laravel–Дайджест (26 октября – 1 ноября 2020)
  • video Laravel Worldwide Meetup #4: — Ryan Chandler «GitHub Actions для Laravel разработчиков», Liam Hammett «Нетрадиционные автозагрузчики».
  • video Laravel Fireside — 21.10.2020 — Стрим Тейлора с ответами на вопросы.

Yii


  • Обновился PhpStorm плагин Yii2 Support.
  • yiisoft/security 1.0 — Еще один компонент из семейства Yii 3. Представляет набор классов для решения типичных задач, связанных с безопасностью.

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


  • Делаем ООП правильно. Или почему наследование — это не ООП.
  • Статья от MediaWiki о важности использования пула HTTP-соединений в хайлоаде на PHP и применении envoyproxy/envoy для этого.
  • Сравнение инструментов подсчета покрытия кода: Xdebug, phpdbg и PCOV.
  • Как убрать лишние детали из тестов и сделать их более читаемыми.
  • О разнице между Value Object и Data Transfer Object.
  • habr Эволюция PHP — от 5.6 до 8.0 (Часть 1), (Часть 2).
  • habr Откуда берется заголовок Content-Type: nginx + php-fpm.

Аудио/Видео


  • audio SDCast #124 — В гостях Михаил Боднарчук, автор фреймворков для тестирования Codeception & CodeceptJS.
  • video Видеозаписи с прошедших митапов:
    • Escaping from OOP boundaries — Александр Лисаченко про устройство и применение lisachenko/z-engine.
    • Большие проекты, архитектура и фреймворки — Александр Макаров на NIXMultiConf #4
    • Очень странные дела на PHP (Кирилл Несмеянов, PHP Russia).
    • Безопасность: от принципов до особенностей PHP (Александр Макаров, Yii).
    • Перенос проекта с PHP4 на PHP7 (Максим Шамаев, Skyeng).
    • Переезд с PHP на Go (Илья Фроликов, Туту.ру).
    • От Doctrine ORM к CQRS за 20 минут (Дмитрий Симушев, Райффайзенбанк).
    • Митап ульяновского PHP-сообщества: микросервисы, автодеплой, легаси и внутрянка языка.
    • Доклады от самарского PHP-сообщества: работа с таймзонами, DDD и единый формат обработки ошибок.




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

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

Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 190
Источник: https://habr.com/ru/post/526098/


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

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

Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Портативн...
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференци...
Свежая подборка со ссылками на новости и материалы. В выпуске: 4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое. ...
Привет! Как понятно из названия, у нас опять митап для системных аналитиков. Всё как обычно, вход бесплатный по предварительной регистрации, четыре наших спикера и бургеры. Кратко: ...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.