ДайджестХабрахабр

PHP-Дайджест № 160 (1 – 15 июля 2019)

В выпуске: PHP 7. Свежая подборка со ссылками на новости и материалы. 0 alpha 3, ReactPHP 1. 4. 0 LTS, порция полезных инструментов, видеозаписи с конференций, подкасты и многое другое.

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

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

  • PHP 7.3.7
  • PHP 7.2.20
  • PHP 7.4.0 alpha 3 — Последний альфа-релиз из запланированных. Фиче-фриз должен быть 22 июля, поэтому текущий список изменений может дополниться только теми, по которым голосование стартовало не позже 8 июля. Итого сейчас на голосовании:
    • Deprecations for PHP 7.4
    • Escape PDO "?" parameter placeholder
    • Deprecate curly brace syntax for accessing array elements and string offsets
    • Add str_starts_with(), str_ends_with() and related functions.

    Также пара свежих изменений без отдельных RFC:
    proc_open будет принимать аргументы в виде массива, их не надо экранировать и при этом процесс запустится напрямую без промежуточного запуска shell:

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    • В PHP 7.4 будет бросаться notice при попытке использовать скалярные типы как массивы. Раньше такие вызовы просто возвращали null:

    $null = null;
    var_dump($null[0]); // NULL $int = 42;
    var_dump($int['foo']); // NULL var_dump(true[0] === false[0]); // true

Инструменты

  • humbug/php-scoper — Инструмент позволяет в один шаг добавить префикс ко всем неймспейсам в указанной папке. Может пригодиться, когда необходимо использовать несколько версий одного пакета, пример использования для WordPress-плагинов.
  • CaptainHookPhp/captainhook — Менеджер Git-хуков для PHP-проектов. Хуки конфигурируются в composer.json.
  • sebastianfeldmann/phpbu — Инструмент для создания резервных копий файлов и баз данных. Умеет шифровать бэкапы и отправлять в хранилища.
  • localheinz/http-method — Набор констант с названиями HTTP-методов.
  • spiral/roadrunner — Сервер приложений для PHP на Golang. Добавлена поддержка FastCGI, настройки CORS из коробки, встроенные метрики на Prometheus. Подробный обзор в докладе от автора.
  • leocarmo/circuit-breaker-php — Реализация паттерна Circuit Breaker для PHP. Альтернатива: ackintosh/ganesha.

Symfony

  • Symfony Local Web Server, 6 месяцев спустя
  • Неделя Symfony #654 (8-14 июля 2019)
  • Переносим Symfony-приложение на Kubernetes

Laravel

  • ru10 полезных методов Коллекций Laravel
  • Исследование TestCase в Laravel и ускорение загрузки на 50% во время тестов.
  • videoДелаем Event Sourcing в Laravel с помощью EventSauce

Yii

  • Как реализовать «логин под другим юзером» для тестирования приложения
  • Последние релизы Yii 2 и новости Yii 3

Async PHP

  • ReactPHP 1.0 LTS — 7 лет назад свет увидел первый релиз ReactPHP v0.1.0. А сейчас, команда проекта анонсировала версии 1.0 пакетов reactphp/dns, reactphp/cache и мета-пакета reactphp/react. Таким образом, все основные пакеты теперь достигли стабильной версии. Релиз идёт с пометкой LTS и значит будет поддерживаться не менее двух лет.
  • video Пишем RESTful API с помощью ReactPHP: Добавляем роуты, Рефакторим добавляя контроллеры, Тестовые ендпоинты, Добавляем обработку ошибок
  • Используем ReactPHP для запуска команд Drupal
  • swoft-cloud/swoft 2.0 — Фреймворк на базе Swoole для реализации микросервисов, вдохновлённый Spring Cloud из Java. Реализует PSR-7, PSR-14, PSR-15 и использует АОП. Вводный пост в поддержку.

Security

  • nbs-system/snuffleupagus — Расширение блокирует запуск потенциально небезопасного кода в рантайме. Об использовании для предотвращения недавно опубликованных уязвимостей.
  • paragonie/argon2-refiner — Инструмент поможет подобрать оптимальные параметры для хеширования с помощью алгоритма Argon2id, добавленного в PHP 7.3.
  • Используем нюансы парсера запросов в PHP для обхода систем предотвращения/обнаружения вторжений в сеть.
  • Magento 2.3.1: Unauthenticated Stored XSS to RCE — Разбор уязвимостей в Magento (<2.3.1), которые позволяли неаутентифицированному пользователю захватить магазин и перенаправить платежи.

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

  • Предзагрузка в PHP 7.4
  • Хорошие практики написания Dockerfile
  • Как правильно работать с Null значениями
  • Прекратите использовать DateTime
  • habrМикросервисы или монолит: ищем решение
  • habrСпецификации в PHP
  • habrWhitespace Обфускатор для PHP
  • habrcomposer vs npm: многомодульная разработка
  • habrРазработка под Docker. Локальное окружение. Часть 1

Аудио/Видео

  • videoDevConf 2019, Москва
  • videoPHPDay 2019, Verona
  • videoPHP Town Hall Episode 67 — О Zend Framework 3 и Laminas c Adam Culp.
  • audioThat Podcast Episode 60 — O Twig, Drupal, и Sculpin с Oliver Davies.
  • audioThat Podcast Episode 61 — О новом компоненте HTTP Client в Symfony с Nicolas Grekas. Николас говорит, что PSR-18 не совместим с HTTP/2, потому что стандарт синхронный по своей сути.

Занимательное

  • Запускаем PHP в JavaScript — Автор использует glayzzle/php-parser и kornelski/babel-preset-php. Из более интересных штук можно глянуть на oraoto/pib – PHP, транслированный в JS с помощью Emscripten.

Спасибо за внимание!

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

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

Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 159

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть