Как делать деплой на PHP

Недавно подготовил презентацию на тему деплоймента php-приложений. Сделал обзор основных проблем при делое, а также обзор способов их решение и инструментов, которые можно использовать для деплоя, благо PHP идет по следам Ruby и появляются различниые инструменты для этого, такие как Rocketeer.

С моей презентацией можно познакомиться перейдя по этой ссылке (навигация идет не только влево-вправо, но и вверх-вниз).

Простой XML-RPC клиент на PHP

Однажды мне потребовалось выполнить несколько XML-RPC запросов, и я столкнулся с недостатком клиентов с простой и работающей реализацией данного механизма.

Я перепробовал различные библиотеки, но они оказались слишком сложными. Например, реализация XML-RPC из репозитория PEAR довольно сложна в установке на Windows, а на линуксовом шаред-хостинге ее не всегда возможно установить. XML-RPC на sourceforge имеет некоторые проблемы с кодировкой UTF-8. Так что я быстро создал свою простейшую реализацию XML-RPC клиента.

Реализация фильтрации по тегам в Yii и не только

Теггирование различных элементов очень часто встречается в разработке сайтов. Сами теги реализуются просто — это отдельная таблица с названиями тегов и таблица связки многие-ко-многим между тегами и какими-то сущностями. Однако реализация фильтрации по тегам — не такая уж простая задача. Фильтровать сущности по тегам как правило приходится одним из следующих вариантов:

  • выбрать все элементы без тегов
  • выбрать элементы, имеющие все указанные теги (и возможно, другие теги)
  • выбрать элементы, имеющие один или несколько из указанных тегов (и возможно, другие теги)

Рассмотрим каждый из этих случаев и приведем пример конкретной реализации фильтрации на Yii.

Передача параметров из контроллера в javascript-файлы

Javascript во вьюхах — часто ли вы встречаете такое?
Зачастую во вьюху из 3-5 строчек html-кода вставляются портянки яваскрипта на сотни строк.
На просьбу вынести этот код в отдельный js файл — можно услышать ответ, что в коде используются php-переменные из контроллера и, поэтому, вынести этот код из в отдельный js-файл не представляется возможным.

А в общем-то это довольно просто сделать. Просто и удобно.

Далее речь пойдет о реализации для фреймворка Yii, однако аналогичный подход легко реализуем и в других фреймворках.

Magento: проблемы с var_dump и print_r

Сталкивались ли вы когда-нибудь с тем, что при выводе объекта на экран при помощи var_dump или print_r вы получали пустую страницу?

При выводе некоторых объектов PHP просто не хватает памяти (потому что объекты рекурсивны).

В таком случае в Magento у всех объектов, наследуемых от Varien_Object (а это практически все объекты), существует специальный метод debug(). Он позволяет избавиться от рекурсии.

Чтобы вывести дамп объекта в magento используйте следующую конструкцию: var_dump($product->debug());