Выпуск №1

Оптимизируем память в PHP, Почему Doctrine ORM не подходит для PHP, рендринг ReactJS на PHP, itertools (yield), Прошлое, настоящее и будущее Code Coverage, Чего ждать, когда ждёшь ребёнка: PHP7, Внутреннее представление значений в PHP7, Phil Sturgeon, TDD — Train Driven Development

Вы слушаете «Пятиминутку PHP», выпуск номер 1 — еженедельный подкаст о новостях из мира PHP, интересных постах в блогах и современных подходах к разработке.

Коротенькая и в чём-то полезная статья «Оптимизируем память в PHP». На этот раз речь не об очередных улучшениях внутри Zend Engine, а несколько советов непосредственно для пользователей PHP: освобождайте память с помощью myqsli_free_result и unset, кешируйте результаты часто вызываемых функций в приватном массиве. Автор даже приводит пример простейшего сборщика мусора, написанного на самом PHP.

Следующая статья-наброс: «Почему Doctrine ORM не подходит для PHP». Основная мысль статьи в том, что Doctrine вдохновлена концепциями Hibernate из Java мира. Однако, как мы знаем «PHP рождён, чтобы умирать», в отличие от долго живущих Java программ. В итоге Identity Map плохо применим в stateless окружении PHP, UnitOfWork переусложнён, Lazy Loading вообще нонсенс, а в EntityManager слишком много магии. Автор также обещает вторую статью с разоблачениями Doctrine, так что следите за новыми выпусками Пятиминутки PHP и я обязательно вам расскажу чем всё кончилось.

Используете ReactJS на фронтенде? Ребята из Facebook выпустили PHP пакет (доступен через composer), который умеет рендрить React шаблоны с помощью PHP! Требуется PHP 5.3 с установленным PHP расширением V8Js (работает в linux, mac и windows). Если же установка дополнительного расширения вам не подходит, тогда план Б: «React as a service» — устанавливаем на сервере nodejs и запускаем специальное приложение, а из PHP обращаемся к нему http запросами, получая готовый html. Кстати, хорошая идея для SAAS стартапа: рендрилка React шаблонов!
http://blog.frankdejonge.nl/rendering-reactjs-templates-server-side/

В PHP 5.5 появились генераторы (ключевое слово yield). С тех пор многие программисты задаются вопросом «где бы мы применить эти генераторы, помимо классического примера чтения строк из файла?». Вот вам пример: itertools — порт одноимённой библиотеки из Python, набор функций для эффективного создания итераторов. Не знаю, пригодится ли вам сама библиотека itertools, но почитать код всегда полезно!

Рекомендую посмотреть слайды презентации от Sebastian Bergmann (напомню, что это автор PHPUnit), про прошлое, настоящее и будущее Code Coverage — покрытие кода тестами. Презентация в первую очередь полезна тем, кто уже пишет эти самые тесты.

В связи с большими внутренними изменениями в движке ZendEngine 3, который придёт к нам вместе с PHP7, команда Zephir встала перед вопросом «кто виноват и что делать». Напомню, Zephir — это язык схожий по синтаксису с PHP, но он компилируемый и предназначен для написания расширений для PHP. В Github идёт обсуждение объёма работы, который предстоит провести, чтобы поддержать PHP7. Надеюсь, у ребят всё получится. Как видим, путь написания расширений к PHP не так уж прост.

Продолжая тему PHP7, на хабре опубликованы переводы отличных статей: «Чего ждать, когда ждёшь ребёнка: PHP7 (часть 1)» (часть 2), и «Внутреннее представление значений в PHP7 (часть 1)». Первую статью рекомендую всем — ёмкое описание новых возможностей PHP7. Вторая статья для продвинутых товарищей, которым интересно как оно всё там работает на уровне Си кода.

Драма в PHP коммунити! Phil Sturgeon — видный деятель, большой коммитер в CodeIgniter и просто коммитер в FuelPHP, Laravel, участник PHP-FIG, основатель PyroCMS и соведущий подкаста PHP Town Hall написал в своём блоге: «я устал, я ухожу». Что же, пожелаем ему удачи! А вам дам ссылку на апрельский выпуск подкаста Full Stack Radio, где Phil в качестве гостя рассказывает свой опыт в разработке и тестировании API на PHP, рельсах и Go, и, конечно, немного о PHP7.

На десерт немного юмора: TDD — Train Driven Development, это когда вы пишете код в поезде от нечего делать.