PHP подкаст #11

Новый стабильный PHP7.1, Symfony 3.2, дедупликации кеша, React вместо Twig’а, сериализуем руками, RabbitMQ для масштабирования и немного еще с Symfoniacs #10

Скачать mp3 (17Мб)

Главная новость недели — выход новой стабильной версии интерпретатора PHP 7.1. Миновало 6 RC и в обозначенный срок вышла новая стабильная версия.

Коротко обозначу новые фичи:

  • function test(): ?int // nullable type
  • function test(): void // void return type
  • function test(): iterable // iterable pseudo-type
  • if (is_iterable($sth)) { //…
  • private const GRUMPY_CONST = 666; // constant visibility
  • [«a» => $a, «b» => $b, «c» => $c] = [«a» => 1, «b» => 2, «c» => 3]; // list() -> []
  • } catch (Exception1  | Exception2 $e) { //…

Встречайте очередную стабильную версию Symfony 3.2. Перейти на неё очень просто, если вы уже на 3+ версии. Большинство нововведений о введении deprecations, которые будут бросать исключения в Symfony 4. В 3.2 единственным новым компонентом будет Worflow, реализующий сети Петри. Мы обсуждали их в одном из предыдущих подкастов.

Вы, наверное, обратили внимание, что я часто говорю о Symfony и не так часто о других фреймворках. На мой взгляд разработчики из Sensio labs ухватили из других экосистем важнейшие моменты раньше остальных в PHP-мире: микроядро/микрофреймворк, компоненты, которые можно более-менее легко замещать другими, отличная документация (в противовес бедной Zend Framework и не фредли на момент 2-3 летней давности). Тем не менее я хочу чтобы справедливость торжествовала и если вы хотите представлять в этом подкасте другие фреймворки, то прошу присоединяться. Я за разнообразие и конкуренцию. Читать далее PHP подкаст #11

PHP подкаст #10

Ночной выпуск подкаста. Все по-быстрому. Тестирование, новый отладчик наоборот, свежий PhpStorm, под гусеницами Яндекс Танка, готовые сборки и холивары.

Скачать mp3 (18Мб)

PHPChunkit — инструмент для запуска тестов параллельно. Есть возможность раскидать тесты на несколько серверов, указывая какой именно chunk выполнять каждому серверу. Если вы хотите запускать тесты параллельно на одной машине, то будьте внимательны с зависимыми серверами. Например, предусмотрите возможность для каждого тест-процесса иметь свою БД. PHPChunkit предоставляет кое-какие хелперы для решения этой проблемы. Рядом с этим репозиторием лежит демо, демонстрирующее как внедрить PHPChunkit в существующий проект с PHPUnit’ом.

Переживет ли ваш проект повышенную нагрузку? Делаете хороший продукт и это значит, что со временем вы однозначно будете переживать увеличение аудитории. Проверьте прямо сейчас свой проект, проехавшись по нему Яндекс Танком. Напишите в коментах сколько RPS вы выдерживаете и включаете ли нагрузочное тестирование в обойму CI?

Еще один отладчик для PHP Dontbug. Главная фича его в возможности обратить направление движения отладчика, т.е. отлаживать вспять. Есть интеграция со всеми IDE, которые поддерживают XDebug. Главное ограничение — невозможность править переменные во время отладки, т.е. все read only. В README репозитория есть ссылки на видео как оно все работает. Написано на Golang. Читать далее PHP подкаст #10

PHP подкаст #9

В 9ом подкасте о PHP:

  • “Вкалывают роботы, а не человек”. Robo для автоматизации.
  • Деплоим PHP-код на Amazon Lambda.
  • @depends в PHPUnit.
  • GUI-велосипеды на PHP.
  • Redis библиотеки не одинаково производительны.
  • Перцептивный хеш изображений.
  • Новый twig v1.28.1.
  • API для Amazon Product Advertising API.
  • API gateway паттерн.
  • Свежая статистика использования PHP по данным packagist.org.

Скачать MP3 (23Мб)

Еще один полезный репозиторий — это таск-раннер Robo. Очень мне напомнил Fiber (Python). Удобен для автоматизации рутинных задач вроде работы с репозиторием, выполнения задач на удаленном сервере, git-команд, выполнения Docker-команд, отслеживания изменений файловой системы и т.д. Все на родном языке. Лучше всего глянуть на их же RoboFile или RoboFile в репозитории Codeception.

Интересный репозиторий, обернутый в Docker, который позволяет легко разворачивать PHP-код на Amazon Lambda. Amazon Lambda не поддерживает PHP рантайм пока, но поддерживает node.js. Враппер написанный как раз на node.js запускает PHP-код.

У PHPUnit есть замечательная аннотация @depends. Она может быть особенно удобна когда вы запускаете интегральные тесты, в которых принимает участие БД. Тесты можно разбить логически на разные методы и запускать их один за другим. setUp & tearDown также запускаются перед каждым зависимым тестом. Поэтому если у вас в setUp вайпается БД, то и перед зависимым тестом она будет зачищена. Возможно, что тест зависит от результатов нескольких тестов. Хороший пример использования @depends по ссылке. Читать далее PHP подкаст #9