PHP Дайджест № 210 (16 – 30 августа 2021)

Фото: Peter Kokot.

Подборка свежих новостей и материалов из мира PHP. Вышла третья бета PHP 8.1, Swiftmailer больше не будет поддерживаться, PHP-FIG обсуждает обновляемые стандарты PER. Для PHP 8.2 предложены два новых RFC: про удаление динамических свойств и перегрузку операторов. Также в выпуске порция полезных инструментов, статьи и видео.

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

Новости

  • PHP 8.1 Beta 3

    Последняя бета в цикле. Следующим релизом станет RC 1, который ожидается 2 сентября.

  • PHP 8.0.10, PHP 7.4.23, PHP 7.3.30

    Секьюрити обновления актуальных веток.

  • Конец Swiftmailer

    В ноябре прекращается поддержка популярного пакета для отправки почты Swiftmailer. Вместо него будет развиваться symfony/mailer.

    Возможности и концепции Symfony Mailer повторяют Swiftmailer, поэтому миграция должна пройти достаточно легко. В Rector есть скрипт миграции и он всего лишь переименовывает классы.

  • PHP Evolving Recommendations (PERs)

    Раньше PHP-FIG выпускали только PSP-стандарты. Проблема в том, что некоторые подобные стандарты требуют постоянной доработки. Например, в случае с код-стайлом сейчас PSR-12 не включает новые возможности из PHP 7.4-8.0.

    Предлагается ввести новый тип рекомендаций PER, которые можно будет обновлять более оперативно.

  • 4 сентября — PHP fwdays’21 Online

    Совсем скоро пройдёт традиционная конференция от fwdays. Программа.

    Будет бесплатная трансляция всех докладов в день проведения (нужно зарегистрироваться).

    Есть дополнительные платные бонусы. Для них можно использовать промокод: HABRDIGEST.

PHP Internals

  • [RFC] Deprecate dynamic properties

    В текущих версиях PHP, если попытаться записать в несуществующее свойство, то оно будет автоматически создано.

    В современном коде это редко делается намеренно, чаще это опечатка или просто дурной тон.

    В этом RFC предлагается задепрекейтить и впоследствии удалить возможность создания динамических (необъявленных) свойств.

    class User { public $name;
    } $user = new User; // Assigns declared property User::$name.
    $user->name = "foo"; // Oops, a typo:
    $user->nane = "foo";
    // PHP <= 8.1: Молча создает динамическое свойство $user->nane.
    // PHP 8.2: Вызывает предупреждение, но все равно создает динамическое свойство.
    // PHP 9.0: Выбрасывает исключение Error.
    

    Это изменение не будет касаться класса stdClass и унаследованных от него. Поведение магических __get/__set также не затрагиваются этим изменением.

    $obj = (object) []; // = new stdClass; // No deprecation warning
    $obj->foo = 1; class myStdClass extends stdClass {}
    $obj2 = new myStdClass; // No deprecation warning
    $obj2->bar = 1;
    

    Благодаря этому изменению в PHP 9.0 можно будет уменьшить размер объекта на 8 байт. На одном объекте это, конечно, ничто, но суммарно на больших приложениях будет заметно.

  • [RFC] User Defined Operator Overloads

    В этом RFC автор, Jordan LeDoux, предлагает добавить возможность перегрузки операторов.

    По сути, для каждого оператора предлагается определить свой магический метод, например __add() для `+` или __equals() для `==`.

    С их помощью можно описывать желаемое поведение для объектов.

    $a = new Number(8);
    $b = new Number(6);
    $c = new Number(4); // Вместо такого
    $posRoot = $b->mul(-1)->add($b->pow(2)->sub($a->mul($c)->mul(4))->sqrt())->div($a->mul(2)); // Можно будет сделать вот так
    $posRoot = ((-1 * $b) + ($b ** 2 - 4 * $a * $c)->sqrt()) / (2 * $a);
    

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

    Тем не менее предложение спорное и слишком много нюансов в нем. И несмотря на очень детальный и продуманный RFC, вероятность принятия невысокая.

  • cross [RFC] Nullable Intersection types

    Предложение сделать пересечения типов nullable в PHP 8.1 не прошло голосование. Многие голосовали против, потому что оно было выдвинуто слишком поздно. Поэтому есть вероятность, что позже будет переголосование в PHP 8.2.

Инструменты

  • whsv26/functional — Автор столкнулся с проблемами существующих реализаций коллекций на PHP и написал свой пакет. Подробнее в статье Дженерик коллекции в PHP.
  • phpseclib/phpseclib — Реализация SSH, SFTP, RSA / DSA / ELLIPTIC CURVES, AES / CHACHA20 / ETC, X.509 на чистом PHP.
  • doekenorg/iterator-functions — Набор функций аналогичных встроенным array_*, но принимающих итераторы. На случай если не нравится классика от Никиты Попова nikic/iter.
  • azjezz/psl — Как могла бы выглядеть стандартная библиотека PHP.
  • php-censor/phpdoc-checker — Консольная утилита для валидации PHPDoc-блоков.
  • github-php/sponsors — Пакет для работы с API GitHub Sponsors. Можно организовать контроль доступа проверяя является ли пользователь спонсором.
  • paglliac/php-dependency-analysis — Инструмент для анализа зависимостей внутри проекта. Более продвинутые штуки можно делать с помощью qossmic/deptrac или phparkitect/arkitect.
  • ArtARTs36/GitHandler — Обертка над Git для PHP. Прислал Ukrainsky.
  • butschster/CronExpressionGenerator — Генератор cron выражений. Прислал butschster.
  • butschster/ray-server — Бесплатный сервер для отладки PHP приложений с помощью spatie/ray. Пост с обзором возможностей и деталями реализации. Прислал butschster.

Symfony

Laravel

Yii

Статьи

Аудио/Видео



Подписывайтесь на Telegram-канал PHP Digest.

Этот дайджест подготовлен совместно с Insolita. Если вам понравился выпуск, поставьте, пожалуйста, ему плюс.

Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
Предыдущий выпуск: PHP-Дайджест № 209

Читайте так же:

  • Режим Super Moon Ultra смартфона ZTE Axon 30 Ultra гарантирует большую красивую Луну на любой ночной фотографииРежим Super Moon Ultra смартфона ZTE Axon 30 Ultra гарантирует большую красивую Луну на любой ночной фотографии Сегодня ZTE опубликовала несколько новых тизеров, посвященных смартфонам линейки Axon 30. Самый интересный из них – с демонстрацией того, как на обычных снимках. Созданных многомодульной камерой устройства. Появляется шикарная большая Луна. Технология достаточно проста: аппарат […]
  • Создать сайт с платным доступомСоздать сайт с платным доступом Веб-сайт членства - это закрытая часть вашего сайта. Где зарегистрированные пользователи могут получить доступ к специальному контенту. Вы можете применить идею, лежащую в основе сайтов членства, к множеству различных ситуаций. И именно поэтому создание сайта членства стало невероятно […]
  • Mail.ru Group создаст образовательный холдинг на базе Skillbox и GeekBrainsMail.ru Group создаст образовательный холдинг на базе Skillbox и GeekBrains Mail.ru Group в партнерстве с основателями Skillbox и частным фондом Александра Галицкого создают образовательный холдинг Skillbox Limited на базе платформ Skillbox и GeekBrains.  В результате сделки контролирующим акционером холдинга остается Mail.ru Group с долей 50,06%. 22,72% […]
  • iPhone 13 подорожает. Всему виной увеличенный объём памятиiPhone 13 подорожает. Всему виной увеличенный объём памяти Аналитик Wedbush Дэниел Айвз (Daniel Ives) заявил, что все модели iPhone 13, включая недорогие iPhone 13 mini и iPhone 13, получат до 1 ТБ встроенной флеш-памяти. В четвертом квартале 2020 года средняя ёмкость флеш-памяти iPhone составляла 141 ГБ. Что позволило компании Apple занять […]