Tanraya под Zend Framework
18/05/2009 08:38
Что-то сегодня вечером меня переклинило и я решил досконально покопаться в Zend Framework’e. Как-то раз я уже писал аппликуху с его использованием, но это было давненько и в глубины фреймворка я не вникал - тогда с меня требовалось по-быстрому накидать простенький сайт.
Сначала я слил мануал о том, как сделать модульную структуру приложения с использованием ZF. Посмотрел сырцы - но там все оказалось крайне не очень, как и во всех подобных приложениях, коих я посмотрел несколько. Авторы подобных приложений мало раскрывают все удобство использования модульной структуры. Чего стоят только их огромные конфиги. Жуть.
Я приверженец идеи “соглашений над конфигурацией” и хочу, чтобы в моём приложении нужно было по-минимуму настраивать ручками, чтобы оно все само работало.
Не найдя ничего хорошего под ZF (хотя нет, одна хорошая аппликуха, судя по описанию - все же нашлась, но она пока закрыта и не распространяется, но штука впечатляющая) решил собрать свою аппликуху, которая бы унаследовала от Tanraya Framework самое лучшее и не унаследовала бы худшее :)
Пока что собрал небольшое приложение, сейчас обучаю его правильно понимать модульную структуру. Удивился, насколько все в ZF сделано похоже, как в Tanraya. Хотя, конечно, в ZF сделано “на широкую ногу” - почти все и вся можно сконфигурить или расширить. И это хорошо. Это позволит реализовать мне свою аппликуху именно так, как я этого хочу. И, кроме того, это будет быстрее, чем если бы я продолжил писать Tanraya с чистого листа. Поэтому, буду биться.
Вот плюсы, которые я вижу, при использовании ZF для написания Tanraya:
- Более быстрое написание Tanraya
- Легкое использование различных классов ZF
- Отличная расширяемость
- Хорошая документация самого ZF
- Большое community, поэтому Tanraya, написанная под ZF заинтересует больше разработчиков
- Ясно, как все работает в ZF, поэтому так же будет понятно, как все работает в Tanraya
- Постоянное улучшение и расширение возможностей ZF. Для Tanraya это означает, что она тоже будет поддерживаться и развиваться, так как развитие ZF будет к этому подталкивать.
- Большое количество решений, типсов и триков под ZF
Теперь о том, что не нравится:
- Беспонтовый ORM (Zend_Db), основанный на паттернах проектирования Table Data Gateway и Row Data Gateway. Чтобы им пользоваться - надо писать тонны кода. Да и паттерн ActiveRecord мне нравится больше, чем тот, который использует ZF.
- Работа с формами. Это тоже ахтунг. Стандартный способ работы с формами в ZF - это описание работы формы при помощи набора классов. Внешний вид формы задается тоже при помощи классов-декораторов. По-моему - ужасно. Просто тонны кода. Нужно быть проще.
- Стандартное поведение Zend_Application. Мне оно просто не нравится :)
- Роутинг (маршрутизация). Это тоже пипец. Дохрена кода. Это плохо. Можно все сделать проще - что я и сделаю. Возможно, не в первой же версии Tanraya, но в последующих - точно.
Так что вот, робяты. Надеюсь, и даже уверен - сейчас дела пойдут гораздо быстрее. Все таки Zend Framework это готовое решение. Не нужно писать ничего с нуля - достаточно грамотно связать и настроить все нужные компоненты фреймворка.
Скорее всего, при выпуске первой версии “Tanraya under ZF” создам отдельную страничку с описухой и открытый Subversion репозиторий.
Только вот не знаю, как теперь Танраю обзывать. Tanraya Framework получается уже не катит :)
Статейка просто outdated немного, но что вам не понравилось в огромных конфигах? Почему жуть?
Не понравилось то, что во многих аппликухах, которые я смотрел - конфиги вида “огромный массив непонятно чего”. И обычно все в одном файле. Нужно разделять например на конфиругирование: среды приложения (тут всякие пути и кодировки), настроки БД, настройки приложения (здесь настройки таймзоны, настройки УРЛ и прочее.).
И чтобы не было в конфигах подобного: ‘driver_options’=> array(PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES UTF8′),
Когда можно сделать просто db_encoding: “utf-8″
Но, конечно, конфиги - это не главное.