Pull to refresh

Вышел релиз eZ Components 2008.1

Reading time3 min
Views908
Сегодня после обкатки релиз-кандидата вышел официальный релиз eZ Components 2008.1. Пересказывать changelog не буду, попробую сделать краткое введение в eZ Components.

Итак, eZ Components — это высококачественный объектно-ориентированный web-фреймворк, написанный на PHP5, распространяемый по New BSD License. О нем уже писали на Хабре. Описываемая версия требует PHP >= 5.2.1

В отличие от фреймворков, предлагающих свою реализацию MVC, ezc оставляет ее на разработчика. Хорошо это или плохо — вопрос сложный, но мне такой подход нравится. Вообще нужно сказать, что ezc — довольно демократичный фреймворк, который позволяет довольно естественно использовать только то, что вы хотите.

Помимо модулей, присутствующих во всех мыслимых фреймворках (абстрактный слой к БД, поиск, работа с почтой и RSS), есть довольно интересные компоненты. Например, построение графиков:

Image Hosted by ImageShack.us

В результате будет сгенерирован вот такой график:



Еще есть интересная компонента для различных трансформаций изображений. Вот пример из реального проекта: нужно обработать список графических файлов произвольного типа (jpeg, gif, png), и создать для каждого thumbnail для списка товаров в jpeg, thumbnail для карточки товара в jpeg, а исходный файл просто сконвертировать в jpeg. Основная идея в том, что сначала нужно создать конвертор и подготовить именованные трансформации:

Image Hosted by ImageShack.us

Мы получили объект конвертора, с которым можем работать где угодно. Как правило, внутри одного проекта используются однотипные трансформации. Обратите внимание, что вторым параметром метода createTransformation() является массив фильтров. В данном примере мы использовали один фильтр на трансформацию, но вообще фильтров может быть сколько угодно. Например, вторым фильтром в трансформациях мы бы могли добавить наложение «водяного знака» с логотипом организации.

Итак, конвертор создан, теперь можем по имени вызывать трансформации, которые он инкапсулирует:

Image Hosted by ImageShack.us

Обратите внимание, что если мы захотим изменить трансформации, например, добавить тот же «водяной знак», или изменить размер, или качество целевых изображений — нам достаточно только по другому настроить конвертор, код в цикле менять не нужно. В цикле вообще происходят минимальные действия, все остальное вынесено за его пределы.

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

Теперь немного о том, как же начать использовать все эти вкусности. Сначала вам нужно получить и установить ezc. Весьма подробно это описано в Installation Guide. Обратите внимание на то, что версия, устанавлимая через pear и скачиваемая версия существенно отличаются. Скачиваемая включает в себя помимо кода сопроводительную документацию (в том числе тесты и UML-диаграммы в графике, что само по себе вызывает уважение), весит очень много. Pear-версия включает только рабочий код и весит всего 7.7 Mb.

Кто-то конечно скажет, что 8 Мb — это много. Возможно. Но то, что не используется — просто лежит в ФС и, как говорится, «хлеба не просит». Если же вас действительно напрягает такой размер — вы можете установить только необходимые компоненты. Я использую полную pear-инсталляцию.

После того, как желаемый дистрибутив лежит где надо, нужно подготовить функцию __autoload() (зачем это нужно, и нужно ли вообще — другой вопрос). Схема именования файлов в ezc, в отличие например от Zend Framework, довольно сложная и непрозрачная. Поэтому если хотите удобство __autoload(), то нужно использовать стандартный метод из ezc Base. Другого мыслимого пути грубо говоря нет (имя файла берется из достаточно объемных массивов вида 'класс' => 'имя_файла').

Вот пример из реального проекта. Здесь помимо ezc используется Zend Framework. Файлы самого приложения именуются в стиле ZF. Обратите внимание, насколько просто цепляются классы вне ezc (все-таки мне больше нравится схема именования ZF). Путь LIBRARY_PATH должен присутствовать в INCLUDE_PATH: set_include_path(LIBRARY_PATH), в данном примере в там две папки: Zend и ezc.

Image Hosted by ImageShack.us

На этом все. Желаю всем побольше бизнес-логики и поменьше изобретения велосипедов ;)
Tags:
Hubs:
+17
Comments33

Articles