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.

    И под вопросом остаются еще следующие (с моим прогнозом):
    • [RFC] Partial Function Application — пока по голосованию не проходит 27: 17;

      Один из авторов RFC, Larry Garfield, написал пост с примерами о том, для чего нужен PFA и пайп-оператор в PHP.
    • [RFC] First-class callable syntax — скорее да, если не пройдет Partial Function Application;
    • [RFC] Pipe Operator v2 — возможно да, если пройдет один из двух RFC выше;
    • [RFC] Property Accessors — скорее всего нет, потому что слишком сложный;
    • [RFC] Readonly properties 2.0 — вероятно да, если не будет выдвинут Property Accessors;
    • [RFC] New in initializers — скорее да, но с ограниченным скоупом;
    • [RFC] Is_Noble — на вид однозначное предложение, но обсуждение идет туго;


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


  • Максимальное масштабирование демо-приложения Symfony с помощью Varnish
  • habr Главные причины, почему мы разрабатываем веб-приложения на Symfony
  • Неделя Symfony #756 (21-27 июня 2021)


Laravel


  • laravelexamples.com — Каталог разных полезных примеров для Laravel от автора YouTube-канала Laravel Daily.
  • habr Автоматическая документация по коду для API в Laravel
  • ru Создание REST API c Ролями и Правами
  • ru Orbit — использование Laravel без SQL
  • video Видео от Mohamed Said (Laravel core): 5 вещей, которые нужно учитывать при работе с контейнером в Laravel; Обмен сообщениями в режиме реального времени в Laravel — Основы про laravel/echo; Что нового в Laravel (#3) – 2021-06-23


Статьи


  • habr PHP-Compiler, или ныряем в кроличью нору FFI.
  • habr PHP — я бы купил это за доллар — В чем клёвость PHP.
  • habr «Дело было вечером, делать было нечего» или краткая история о сравнении производительности языков программирования — PHP быстрее Python и Ruby, PHP вообще один из самых быстрых интерпретируемых языков.
  • habr Чек-лист: как оставаться отказоустойчивым, переходя на микросервисы на PHP (и как правильно падать)
  • dollar Rector — The Power of Automated Refactoring — Книга по rectorphp/rector полностью готова. Ссылка со скидкой $5 специально для читателей дайджеста действует до 23 июля.
  • Как насчет билдеоров для конфигов? — Интересная идея от Brent Roose: вместо xml, yaml или PHP-массивов использовать объекты для конфигурационных файлов. Из плюсов получаем дополнение и валидацию в IDE из коробки.
  • b-viguier/php-emoji — Функции PHP для работы с массивами объясняются с помощью emoji:




Аудио/Видео


  • video ru Пятиминутка PHP № 89: Соревнования по программированию на платформе All Cups.
  • audio PHP Internals News podcast #89 — Про Partial Function Application с Larry Garfield и Joe Watkins.
  • video Никогда* не используйте массивы — Доклад Larry Garfield.
  • video ru Геометрическая интерпретация принципа подстановки Барбары Лисков — Полезно, чтобы раз и навсегда понять, что он значит.


Разное


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



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

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

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

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

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


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

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

12 выпусков позади, значит пора немного поменять формат, но внутри вас всё так же ждут исследования, демонстрации, открытые модели и датасеты. Встречайте новый выпуск подборки материа...
В первом дайджесте нового года чаты на вебсокетах, переход из 1С в Android, написание игры за месяц и тренды мобильных игр, доходы рынка приложений и полезные инструменты. Это и многое др...
Свежая подборка со ссылками на новости и материалы. В выпуске: Fibers для асинхронного PHP, первые нативные атрибуты, короткий match и другие RFC предложения для PHP 8.1, инструменты, м...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Фото Erika Heidi Свежая подборка со ссылками на новости и материалы. В выпуске: 3 новых и 4 принятых RFC предложения для PHP 8, включая объявление свойств в конструкторе, о блокиро...