PHP Дайджест № 206 (15 – 29 июня 2021)

от автора

Фото: Иван Ганцев.

Подборка свежих новостей и материалов из мира PHP. В выпуске: вторая альфа PHP 8.1.0 и обзор того, что еще может войти в релиз; новый RFC с предложением добавить механизм защиты от инъекций. А также порция полезных инструментов, статьи, видео и подкасты.

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

Новости

  • PHP 8.1.0 alpha 2

    Вторая альфа доставлена по расписанию.

    Заморозка фич ожидается 20 июля. Это значит, что RFC опубликованные после 22 июня уже точно не попадают в 8.1.

    Итого имеем из того, что уже точно будет:

    • Enum они же перечисления RFC;
    • Новый тип never для возвращаемых значений RFC;
    • Файберы RFC;
    • Финальные константы в классах RFC;
    • Оператор распаковки поддерживает массивы со строковыми ключами RFC;
    • Объявлено устаревшим преобразование float в int, где теряется дробная часть RFC;
    • Интерфейс Serializable объявлен устаревшим RFC;
    • Запись восьмеричных чисел с префиксом 0o RFC;
    • Ограничено использование $GLOBALS RFC;
    • Пересечения типов RFC;

    Полный список изменений можно посмотреть на php.watch/versions/8.1.

    И под вопросом остаются еще следующие (с моим прогнозом):

PHP Internals

  • check [RFC] Pure intersection types

    В PHP 8.1 будут простые пересечения типов. Синтаксис вот такой TypeA&TypeB и означает, что переменная должна одновременно быть instanceof TypeA и instanceof TypeB.

    Предложение принято практически единогласно, но вот как высказался об этом Дмитрий Стогов:

    Например, как часто ты будешь использовать пересечения типов? Скорее всего, никогда, а тормозить они будут всегда (даже когда не используются).

    Больше интересных мыслей в интервью: Дмитрий Стогов о своём пути и PHP.

  • [RFC] Is_Noble

    Проблема SQL- и других инъекций всегда была очень острой для безопасности PHP приложений. Данный RFC предлагает частично решить вопрос подобных уязвимостей.

    Предлагается добавить функцию is_noble(string $str): bool, которая проверяет является ли переданная строка «чистой», то есть объявлена как литерал в коде, а не получена извне.

    is_noble('Example'); // true  $a = 'Hello'; $b = 'World';  is_noble($a); // true is_noble($a . $b); // true, конкатенация двух чистых строк тоже чистая is_noble("Hi $b"); // true  is_noble($_GET['id']); // false потому что данные от пользователя is_noble(sprintf('Hi %s', $_GET['name'])); // false is_noble('/bin/rm -rf ' . $_GET['path']); // false is_noble('<img src=' . htmlentities($_GET['src']) . ' />'); // false — никакой ескейпинг не делает строку чистой is_noble('WHERE id = ' . $db->real_escape_string($_GET['id'])); // false 

    3v4l.org/1aFC2#focus=rfc.literals

    Эту функцию можно будет использовать в пакетах для валидации входных данных и быть уверенном на 100%, что пользователь пакета не передал опасный аргумент.

  • [RFC] Deprecate boolean to string coercion

    Предлагается задепрекейтить преобразование bool в string, потому что результат неочевидный и с большой вероятностью приводит к багам:

    (bool)true  -> '1' (bool)false -> '' 
  • Ilija Tovilo спрашивает идеи для простых RFC для 8.1, Никита отвечает «дженерики» 🙂

Инструменты

  • VKCOM/nocolor — Новый инструмент от команды VK для валидации архитектуры PHP проектов. Есть сравнение с deptrac. Был анонсирован сегодня на PHPRussia.
  • beyondcode/expose 2.0 — Классный инструмент для проброса локального сервиса наружу: тестирование вебхуков, демонстрация сайтов. Аналог ngrok, только на PHP.
  • nunomaduro/phpinsights v2.0 — Красивая CLI-обертка над различными инструментами контроля качества кода.
  • nunomaduro/patrol — Красивый CLI анализатор зависимостей, указанных в composer.json.
  • k-samuel/faceted-search — Легковесный пакет для организации фасетного поиска на сайте. Работает на чистом PHP и можно использовать на небольших данных (100_000 продуктов с 10 свойствами) до внедрения ElasticSearch.
  • Ne-Lexa/php-crossplane — Парсер и билдер конфигурационных файлов NGINX. Прислал NeLexa.

Symfony

Laravel

Статьи

Аудио/Видео

Разное

  • Интересная идея переопределить встроенные функции и отключить стандартную реализацию через disable_functions:
  • Неужели Битрикс станет норм?


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

Если вам понравился дайджест, поставьте, пожалуйста, ему плюс — это очень мотивирует продолжать делать.

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

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

ссылка на оригинал статьи https://habr.com/ru/post/565202/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *