Загрузка данных
 
Логин:   Пароль:      
Регистрация   Забыли пароль?

15 горячих:


Сообщество

Учебка

Любые вопросы по php, как сделать, что делать если совсем плохо ;-), как жить и тд.

Публикации   Пользователи   RSS
Закрыть
Загрузить:
Указать:
Выравнивание:
Альт

Zend_Tool and ZF 1.8

Zend ToolСейчас, думаю вы слышали новость, Zend Framework 1.8 готов к работе. В ZF 1.8 были добавлен несколько новых компонентов, таких как: Zend_Application, Zend_Navigation, Zend_Tag_Cloud и Zend_Tool. Zend_Tool это не компонент в обычном понимании. Множество компонентов имеют базовый класс в начале пространства имен. Zend_Tool нет. Множество компонентов в основном используются внутри кода приложения упрощая исполнение задач. Zend_Tool нет. Zend_Tool более похож на framework чем на компонент — framework внутри framework-а.

Так что же такое Zend_Tool?


Инициатива началась с изучения, что необходимо сделать для создания нового поколения framework и приблизить его к RAD(Rapid Application Development). RAD как вы себе представляете, термин с очень красивым расплывчатым определением. В его обычной трактовке, это термин обозначает скорость с которой вы можете создавать ресурсы по запросу для приложений. В большинстве идеальных ситуациях, начиная разработку или на стадии загрузки проекта, он должен содержать минимум который разработчик может использовать, для дальнейшего интересного программирования. После всего, «интересное программирование» составит большую часть работы пока приложение не будет выпущено.

Таким образом если это интересное программирование, что тогда не интересное программирование. Для Zend Framework и большинства основанных на MVC framework-ах к примеру, это процесс создания и инициализации основных ресурсов для всех проектов: основная структура проекта, стартовые файлы конфигурации, стартовая раскрутка и автозагрузка кода и т.д. Это так же включает задачи по обработке ошибок, созданию контроллеров и созданию просмотров и многое другое. Так же для кого-то покажется сложными, запутанными механизмы ZF, некоторые из задач потребуют часов чтения методичек, руководств и других материалов. Ну уж точно не «быстрая» разработка.

Zend_Tool как Framework


Мы создали систему целью которой является создание базовых ZF приложений. Основанная на командной строке и генерации рабочего(точного) кода, а так же целостности существующего кода, система является гибкой и охватывает все возможные стороны касательно разработчика. Zend_Tool спроектирован для облегчения создания абстракций во всех возможных точках где по нашему мнению разработчики захотят расширить систему. К примеру, мы имеем CLI(Call Level Interface) клиента, framework-инструмент разработанный как RPC(remote procedure call) система дающая возможность разрабатывать non-CLI клиентов. Пока мы имеем базовых поставщиков (совместимых с системой), интерфейс для создания новых поставщиков остается легким для расширения и понимания.

Zend_CodeGenerator & Zend_Reflection


В процессе разработки, мы открыли пару проблемных мест не имеющих единого решения. Генерация кода одно из таких мест. Как правило, когда идет речь о генерации кода, обычно подразумевается подход основанный на шаблонах. Сгенерированный код, как правило, получаем из файла содержащего шаблон чаще всего написанный не по правилам, неверно сформированный(по отношению к стандарту языка). Подход на шаблонах так же демонстрирует риск выхода разработчиков за пределы стандартов кодирования и возможность генерировать плохой код(плохой код, в смысле источник плохо сформированного кода) Таким образом мы немедленно реализовали компонент который предоставил объектно-ориентированный интерфейс на подобии PHP's Reflection API для генерации хорошо отформатированного и хорошо сформированного объектно-ориентированного коды. Так же мы хотим сказать что компонент Zend_CodeGenerator может использоваться отдельно от Zend_Tool. Этим мы хотим сказать, что если в найдете часто повторяющиеся генерирование кода, посмотрите в сторону Zend_CodeGenerator.

Zend_CodeGenerator не только пишет код, но и имеет возможность читать существующий код, модифицировать его и генерировать новый код. Это его основное назначение от других компонентов рожденных в Zend_Tool, Zend_Reflection. Zend_Reflection это не изобретение колеса, как факт, он расширяет PHP's Reflection API позволяет добавлять расширения созданные пользователями, docblock reflection (и аннотации tags веутри docblocks), а так же file-based reflection. Компонент может быть использован как drop in replacement когда необходимо получить новые возможности.

Zend_CodeGenerator и Zend_Reflection имеют похожие API. Объект Zend_Reflection чтение структуры кода, объект Zend_CodeGenerator писать структуры кода. Вместе эти два компонента дают возможность просто воспроизводить и писать код в процессе разработки приложения.
Zend_Tool Command Line Client et. al.

CLI RAD очень ожидаем ZF разработчиками. Как упоминалось ранее, процесс установки начальных ресурсов проекта может быть утомителен. Множество разработчиков отдают предпочтение взаимодействию с средой разработки через терминал или командную строку, таким образом это место естественно, мы уверенны, будет наиболее предпочтительным для разработки клиента в Zend_Tool. Это не значит, что это будет единственный клиент, как говорилось выше, функциональность Zend_Tool клиента абстрактна и может быть разработан новый клиент для взаимодействия с Zend_Tool. IDE и текстовые редакторы имеют возможность перехватывать вызовы клиента и отправлять команды к своему интерфейсу. Две потенциальных точки расширения включены в мои любимые инструменты. Zend Studio и Textmate — возможности практически безграничные. Другие клиетны могут запустив PHP эффективно делая надстройки над Zend_Tool для своих задач.

Zend_Tool_Project


Since разработка проекта это интерактивный процесс, уравнению со стороны инструментария так же необходимо содержать следы в истории. Что мы имеем ввиду история содержит следы действий которые вы совершили: что вы создали, где это лежит в структуре проекта, и что такое контекст проекта? Как пример, после создания проекта вы захотите создать контроллер. Со всеми намерениями и замыслами, контроллер это обычный файл с классом внутри. Как окружения инструментария знает разницу между обычным файлом и файлом контроллера?

Zend_Tool_Project решает данную проблему. Zend_Tool_Project это узел функциональностей созданный для работы с Zend_Tool_Framework для решения проблем управления проектами. Zend_Tool_Project содержит следы ресурсов внутри вашего приложения, где они в системе связей к другим ресурсам и имя которое вы присвоили им. Это ключ к «повторяющийся разработке». Как пример, если вы создали проект с контроллером по имени «foo» вы желаете добавить действие данному контроллеру позже, ниже на линию. Для бесшовной разработки по возможности, это должно быть просто для изменения также как создание ресурсов. Сделаем это, Zend_Tool_Project содержит следы всего что вы сделали внутри вашего проекта.

В дополнение, следит за ресурсами приложения, Zend_Tool_Project это ключевая часть Zend_Tool которая обеспечивает решения «построение Zend Framework проекта». Zend_Tool_Project знает который проект, контроллер, просмотр(вид), класс автозагрузки, index.php файл, и так далее, должны быть, и автоматически создает для вас. Если вы уберете Zend_Tool_Project из Zend_Tool среды выполнения, вы получите framework или платформу для разработки инструментальной системы. Любой проект может использовать Zend_Tool_Framework для построения инструментов которые необходимы.

Таким образом, имея все это в виду. Что оно может сделать прямо сейчас? Вместо того чтобы говорить о нем, посмотрим несколько скриншотов.

Что возможно в настоящее время

Помощь
Zend Tool

Ошибка
Zend Tool

Создаем проект
Zend Tool

Создаем контроллер
Zend Tool

Создаем действие
Zend Tool

Что дальше


К тому что есть сейчас в версии 1.8, несколько новых возможностей уже находятся в разработке. Некоторые из этих возможностей являются бета версиями или все еще находятся в стадии проектирования. К примеру, с Zend_Application мы окончательно решили какую «модель» будем использовать, даже если мы говорим только о том какое имя должно быть. Так же, с версией 1.8 мы закончили опубликование структуры проекта по умолчанию. Для проекта который имеет очень прочную основу в пространстве «библиотеки компонентов» эти огромные шаги для Zend Framework.

Дополнительно к поддержке модели, мы планируем добавить «module» модульную поддержку (для построения приложений из компонентов), соединение с БД, и Zend_Db_Table генератор файлов. Все это можно увидеть в следующих выпусках. Дополнительно Zend_Tool станет еще более расширяем, новые (more beta) возможности
могут быть распространены за проекты и которые встраиваются непосредственно в Zend_Tool.

Оригинал статьи


Zend_Tool and ZF 1.8
Tracker 12 июня 2009 12:39 комментариев: 8
:) 1,19 :(

Комментарии:
Тулзу видимо выпустили что бы не отставать от ROR - потому что ZS умеет и так создавать структуру проекта нажатием одной кнопки.

З.Ы. Переводчику спасибо за материал.
Sych Sych   14 июня 2009 11:40 Комментировать может только авторизованный пользователь
:) 1 :( #
Создание проекта это только начало, пока смысла в этом мало, а в будущем может будет скаффолдинг нормальный, тогда симфонисты не смогут им хвалиться :)
san   23 июля 2009 15:20 Комментировать может только авторизованный пользователь
:) 0 :( #
Я не работал с Симфони просвятите подробнее пожалуйста.
Tracker   23 июля 2009 16:41 Комментировать может только авторизованный пользователь
:) 0 :( #
лично меня заинтриговал факт что кодогенератор работает не на шаблонах а на рефлекшенах, нужно будет поковырять, не совсем понимаю как они это сделали поэтому интереснее вдвойне :)
standov   23 июля 2009 22:51 Комментировать может только авторизованный пользователь
:) 0 :( #
Может краткую заметку по єтому поводу сделаете?
Интересно узнать мнение со стороны и посмотреть на взгляд другого человека.

«кодогенератор работает» — Где? Я не заглядывал внутрь. Вы имели ввиду Zend_CodeGenerator?
Tracker   24 июля 2009 13:17 Комментировать может только авторизованный пользователь
:) 0 :( #
ну да, абзац Zend_CodeGenerator & Zend_Reflection

не, чукча не писатель
standov   28 июля 2009 22:47 Комментировать может только авторизованный пользователь
:) 0 :( #
:))))
До чукчи далеко, но вот если честно как насчет статейки о Zend_Reflection?
Tracker   29 июля 2009 07:48 Комментировать может только авторизованный пользователь
:) 0 :( #
Взглянул на Reflection в документации PHP 5.

Должно быть все достаточно просто, как всегда исключая некоторые ньюансы.

К примеру, создают в коде не текст а объект класса IndexController

class IndexController extends Zend_Controller_Action
{

public function indexAction()
{
}

}

, а потом через Reflection PHP 5 создают текстовое представление.
Это позволяет, теоретически, не менять класс генерации при изменении класса IndexController или любого другого класса.

А вот если бы был текст, тогда при каждом изменении IndexController вам бы автоматически пришлось бы меняить и Zend_Reflection.


Tracker   29 июля 2009 10:38 Комментировать может только авторизованный пользователь
:) 0 :( #
Только зарегистрированные пользователи могут оставлять комментарии.
© 2008 | О сайте | Инструкции | Обратная связь
© Powered by BigStreet

Работа с БД:
 Время - 0.0359
 Запросов - 11
Работа с кэшем:
 Время - 0.0074
 Записей - 2
 Прочтений - 5
Общее время:
 0.0889