PHP Дайджест № 215 (1 – 15 ноября 2021)

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

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

Картинка: Gabriel Nunes.

Подборка свежих новостей и материалов из мира PHP.
В выпуске: последний релиз кандидат PHP 8.1 перед финальным релизом, бенчмарки PHP 8.1; в PHP 8.2 планируется задепрекейтить динамические свойства — добро или зло?; про перенос багов с bugs.php.net на GitHub; немного обновлен PSR-16.
Также в выпуске полезные статьи, видео и другие новости сообщества.

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

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

Новости


  • PHP 8.1.0 RC 6


    Вышел последний релиз кандидат, а значит PHP 8.1 выйдет уже меньше, чем через две недели.

    • video Интересный обзор новых фич PHP 8.1 сделал Mohamed Said (Core Laravel): Getting Ready for PHP 8.1
    • Brent Roose: PHP 8.1 в 8 блоках кода

    Кроме прочего, в PHP 8.1 сделано много улучшений по производительности. Судя по результатам свежих бенчмарков от одного из core PHP разработчиков, Symfony demo приложение работает на ~30% быстрее, чем на PHP 8.0.

    Веб-приложения не на компонентах Symfony получат более скромный прирост, например для WordPress будет ~3-5%.

  • [RFC] Migrating to Github Issues


    Предлагается перенести баги со старой системы bugs.php.net на GitHub в репозиторий php/php-src. Это касается всех багов, кроме секьюрити-проблем, которые не должны быть публичными.

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

  • [RFC] Deprecate dynamic properties


    На голосовании 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.

    Кроме того, в последней версии RFC добавлен еще атрибут #[AllowDynamicProperties]. Его можно навесить на любой класс и в этом классе продолжат работать динамические свойства.

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

    С другой стороны, отсутствие динамических свойств избавит от возможных ошибок и сделает код более прозрачным.

    Но что еще важно, если в PHP 9.0 удастся убрать динамические свойства, то это существенно упростит код интерпретатора и уменьшит потребление памяти. Причем памяти для всех приложений.

    Вот пример от Christoph M. Becker для иллюстрации проблемы с памятью свойств: https://3v4l.org/f8OZj. И это не утечка памяти, а эффект создания хеш-таблицы свойств, нужной для поддержки динамических свойств.

    Также в тему статья от одного из контрибьюторов Symfony о том, почему не стоит бояться депрекейшнов.

  • Обновлен PSR-16: Common Interface for Caching Libraries


    Для пакета php-fig/simple-cache выпущены две новые версии. В 2.0.0 добавлены типы для аргументов, а в 3.0.0 — типы возвращаемых значений.

  • Локальная root-уязвимость в PHP-FPM


    Уязвимость позволяет пользователю с низкими привилегиями (например, www-data) повысить свои привилегии до уровня root, используя ошибку в PHP-FPM. Хоть это серьезная проблема, но не RCE. То есть злоумышленнику сначала надо будет использовать другие техники, чтоб завладеть рабочим процессом PHP. По ссылке подробный разбор от исследователей.

    Уязвимость исправлена в поддерживаемых ветках PHP 7.4.25 и PHP 8.0.12 и PHP 7.3.32.

    На PHP 5.3—7.2 уязвимость тоже есть, но выпусков с исправлением не будет. Поэтому стоит срочно обновляться на поддерживаемые версии PHP.


Инструменты


  • PHPStan 1.0 — После шести лет разработки состоялся первый стабильный релиз статического анализатора. В релизе новый уровень проверки «9» и другие улучшения.
    Есть свежее интервью с автором PHPStan: video PHP Release Radar — Episode 13
  • melbahja/seo — Библиотека с хелперами для организации карты сайта, мета-тегов, и других оптимизаций под поисковые системы. Без сторонних зависимостей
  • PrinsFrank/php-geo-svg — Генерация географических svg-карт без использования сторонних сервисов.
  • sapienphp/sapien — Предоставляет Request и Response вместо глобальных массивов $_GET, $_POST, $_COOKIE, и функций для работы с ответами. PHP 8.1+.
  • Falseclock/AdvancedCMS — Библиотека для работы с CAdES — стандартом электронной подписи, представляющий собой расширенную версию стандарта электронной подписи CMS (Cryptographic Message Syntax). Прислал falseclock.


Symfony


  • Что нового будет в Symfony 5.4
  • Обновите Flex в ваших проектах на Symfony
  • Создание кастомных правил PHPStan для проекта Symfony.
  • An Asynchronous Request Bundle for Symfony


Laravel


  • spatie/laravel-data — Позволяет создать многофункциональные переиспользуемые дата-объекты для Laravel. Пост в поддержку
  • nunomaduro/larastan — Обёртка над статическим анализатором PHPStan, адаптированная под специфику Laravel.
  • Deploying distributed web application — Laravel queued jobs
  • How to update large data in Laravel
  • Использование аттрибутов для роутинга
  • video Laravel Meetup #11: — Building APIs & Spotlight and Modals With Livewire.
  • ru Паттерн Action-Domain-Responder


Yii


  • Еще один пакет из Yii 3: yiisoft/yii-console
  • habr Yii 3 будет не тем, чего я ожидал


Статьи


  • habr Как ManyChat на PHP8 переезжал
  • habr Перевод аудио-сообщений в текст в telegram при помощи Wit
  • habr Сравнение php-fpm, nginx-unit и laravel-octane
  • Эволюция PHP-объектов
  • Современное шифрование в PHP с помощью библиотеки libsodium
  • Паттерны проектирования на PHP: Visitor, Adapter vs. Bridge, Decorator vs. Proxy.
  • Type variance in PHP — Никита Попов об особенностях системы типов в PHP.
  • Интересный трюк от Larry Garfield с ридонли свойствами в PHP 8.1.


Аудио/Видео


  • ru video Свежий выпуск подкаста Пятиминутка PHP — Конференция YaTalks, первые впечатления от Yii3, PHP 8.1 уже близко, Tinkerwell, Mac mini на M1, механические клавиатуры и коврик для мыши с JSON API.
  • video Generics in PHP — Что такое дженерики и зачем они нужны от Brent Roose.
  • video Getting Started with PHP in 2022 — Интро в PHP от Mohamed Said (Core Laravel).


community Сообщество


  • PHP Is Killing Python — Конечно же, нет, но PHP хорош, а хейтить его — это как использовать любой другой стереотип.
  • habr Tier-1 компании на рынке PHP в РФ
  • habr Поход выходного дня, митапы в баре и 30 тысяч на блины: истории городских PHP-сообществ.



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

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


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

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

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


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

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

Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Главные тем...
Субботний вечер омрачен скандалом - сайт не работает, провайдер негодяй, админы - не специалисты, а сервера - решето. Вызов принят, или почему при всей нелюбви к 1С-Битри...
В новом дайджесте уязвимости в Android, сокращение аналитического трафика и жидкие персонажи, AR-маски и страдания Senior-а, работа с привычками, лучшие издатели года и многое другое! ...
Выпущен монитор системных ресурсов, работающий на Raspberry Pi и 7-дюймовом экране. Зонд жрет всего 30 мегабайт оперативки без использования GraalVM (но как?). И зонд, и дисплей-сервер для Ra...
Свежая подборка со ссылками на новости и материалы. В выпуске: О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое дру...