среда, 18 августа 2010 г.

Памятка по исключениям php 5.3+

Начиная с PHP версии 5.3.0+ прикладному разработчику по умолчанию доступна библиотека SPL (Standart PHP Library), которую теперь даже нельзя отключить опциями компиляции. В связи с этим, можно безопасно пользоваться решениями предоставляемыми этим расширением. В этой заметке я хотел бы осветить набор стандартных исключений, предоставляемых SPL.

четверг, 12 августа 2010 г.

Кеш-драйвер для Doctrine на основе Zend_Cache

Продолжаем серию статей посвященную интеграции Doctrine 2.0 и Zend Framework 1.10. В этой статье мы добавим поддержку кеш-драйвера для Doctrine на основе Zend_Cache.
Введение

Кеш-драйвер очень важная часть Doctrine, т.к. без кеширования метаданных и запросов, производительность в целом может существенно упасть. Поэтому разработчики строго рекомендуют использовать кеш.

По умолчанию, в доктрине поддерживаются следующие драйверы:
  • Doctrine\Common\Cache\ApcCache
  • Doctrine\Common\Cache\MemcacheCache
  • Doctrine\Common\Cache\XcacheCache
  • Doctrine\Common\Cache\ArrayCache
Собственно для "продакшина" пригодны только первые три. Последний предназначен только для разработки и кеширует данные только в рамках одного запроса. Проблема заключается в том, что все эти три драйвера требуют дополнительного ПО, установленного на сервере.

В ZF есть отличный компонент для работы с кешем - Zend_Cache. Стоит отметить, что Zend_Cache кроме поддержки APC, XCache, Memcache умеет работать с простыми файлами, SQLite и другими бэкэндами. Напишем адаптер, позволяющий Doctrine работать c Zend_Cache.

среда, 11 августа 2010 г.

Интеграция Zend Framework 1.10 и Doctrine 2.0

В этой статье я продолжу разработку некого каркаса приложения на Zend Framework'e, придерживаясь лучших практик из мира объектно-ориентированного проектирования. Мы шаг за шагом будем интегрировать Doctrine 2, а поможет нам Dependency Injection контейнер, который мы успешно интегрировали в предыдущей статье.

суббота, 7 августа 2010 г.

Интеграция Symfony DI-контейнера в Zend Framework 1.10.x

Возникло у меня желание, начать новый проект на Zend Framework'е с применением лучших практик из мира объектно-ориентированной разработки ПО и современных тенденций PHP-индустрии. Целью всего этого является конечно же обучение и закрепление изученного материала.

Первым делом, решил интегрировать Dependency Injection контейнер в Zend Framework.  Ибо без этого трудно добиться "хорошего" дизайна, кроме того я не смогу эффективно тестировать свои объекты и классы. Что бы лучше понять что из себя представляют DI-контейнеры, а так же паттерн Dependency Injection советую прочитать статью Мартина Фаулера, перевод которой доступен здесь.

В этой статье я шаг за шагом интегрирую Dependency Injection контейнер от Symfony в Zend Framework версии 1.10.x. При этом я постараюсь действовать согласно методологии TDD (Test Driven Development), а именно практики Test First - написание тестов, до реализации.

воскресенье, 25 июля 2010 г.

Установка Redmine - системы управления проектами

Мысль организовать свой процесс более упорядоченно и систематизировано витала давно. Долгое время пользовался бесплатными хостингами проектов, наподобие http://www.assembla.com/ и http://www.xp-dev.com/. В принципе для open-source проектов отличные решения. А вот для приватных проектов - на ассембле придется платить, а на xp-dev нельзя гибко настраивать доступ к проекту, либо полностью открытый проект, либо полностью закрытый от посторонних глаз. А хотелось бы совмещать: что-то открыть (например документацию, timeline), а что-то закрыть (код, внутреннею информацию и т.д). Да и эти хостинги довольно ограничены по возможностям. Платные же сервисы даже не искал, нет желания привязываться к ним.

Т.о. бесплатные хостинги отпали, платные тоже. Остается найти автономную систему, желательно полностью удовлетворяющую моим потребностям.

суббота, 24 июля 2010 г.

среда, 21 июля 2010 г.

Вольный перевод статьи Мартина Фаулера "Inversion of Control Containers and the Dependency Injection pattern"

Попытки разобраться с принципом ООП Инверсия зависимостей (Dependency Inversion Principle) привели к статье Мартина Фаулера "Inversion of Control Containers and the Dependency Injection pattern" оригинал которой доступен здесь. Поиски перевода на русский язык не увенчались успехом, поэтому решил сделать перевод, заодно и лучше понять эту статью и сам принцип.