Neurons to bytes

Tanraya под Zend Framework

zend-frameworkЧто-то сегодня вечером меня переклинило и я решил досконально покопаться в 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 получается уже не катит :)

Also interesting

  • No Related Post

  1. lcf says:

    Статейка просто outdated немного, но что вам не понравилось в огромных конфигах? Почему жуть?

    • Ouch! says:

      Не понравилось то, что во многих аппликухах, которые я смотрел - конфиги вида “огромный массив непонятно чего”. И обычно все в одном файле. Нужно разделять например на конфиругирование: среды приложения (тут всякие пути и кодировки), настроки БД, настройки приложения (здесь настройки таймзоны, настройки УРЛ и прочее.).
      И чтобы не было в конфигах подобного: ‘driver_options’=> array(PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES UTF8′),
      Когда можно сделать просто db_encoding: “utf-8″

      Но, конечно, конфиги - это не главное.


(required)


(required but won't be displayed)