Dec 21

Разработчики Zend Framework решили последовать примеру популярных на данный момент не-PHP’шных фреймворков (в частности, ROR) и решили добавить в ZF работу с консолью и генерацию кода. Подробно можно прочитать тут (англ).

Хочется отметить комментарий Александра Макарова:

Разработчики ZF последовали моде и скорее всего включат в ZF 1.5 консольный генератор кода. Что означает возможность билда из метаданных и наличие столь модного сейчас скаффолдинга.

Позволю себе немного не согласится. Если походить по ссылкам и почитать про Zend_Console, Zend_Build, Zend_Build for Core, то можно заметить первое несоответствие - нигде в них не содержится Zend_Db в зависимостях ни в каком виде. Это раз. Два - структура ZF очень продуманная и гибкая, таким образом предполагать, что CRUD будет реализован простым наследованием от Zend_Controller_Action, с которым будут связаны определенного вида View’хи, по меньшей мере - странно. Мне видится реализация  такого CRUD’а только, если у нас появится 2 дополнительных набора элементов - поля для таблиц (что-то типа Zend_Db_Table_Field) и widget’ы (типа ), которые будут вызваны для этих полей при их рендеринге (Zend_View_Widget, хелперы тут не подойдут немного, ИМХО, хотя в данном случае могу ошибаться). Вот тогда всё будет точно следовать стилю ZF. :) Но тогда назревает другая проблема - если есть Field’ы (с валидаторами и прочим), то почему не сделать нормальный ORM (заюзав, естественно паттерн ActiveRecord). А, насколько я знаю, полноценная реализация ORM в roadmap ZF не входит никаким боком. Более того - они явно говорили, что реализовывать её не будут (ссылку найти сейчас не могу, к сожалению). Так что, ИМХО, Scaffolding’у в ZF не быть…

PS. А как вообще можно перевести Scaffolding на русский язык?…

written by fxposter \\ tags: ,


10 Responses to “ZF Code Generation”

  1. 1. Sam Says:

    Только не ActiveRecord! Лучше нормальную генерацию, чем AR!

    p.s. каким боком AR относится к скаффолдингу? :)

  2. 2. FX Poster Says:

    1. Гм. Что у нас на данный момент получается удобнее AR в плане обработки и валидации?
    2. Через AR очень удобно реализовывается CRUD, т.к. есть метаданные о полях и способы их валидации.

    А так – что ты генерировать собрался?

  3. 3. Sam Says:

    1. Генерация кода.
    2. Генерацией удобней.

    Как что? Базовые классы для моделей конечно:

    class BasePost { сгенерированные методы }

    class Post extends BasePost{ мои методы }

  4. 4. Sam Says:

    А скаффолдингом не обязательно генерится что-то, зависимое от AR.

  5. 5. FX Poster Says:

    Мля… Я запутался :)

  6. 6. FX Poster Says:

    Т.е. по сути ты предлагаешь генерить классы, которые будут использоваться вместо Zend_Db_Table? :) Хер они на это пойдут. :)

  7. 7. Andrey Says:

    Кстати Scaffolding уже есть в Symfony ;)(если я правильно понимаю его смысл). Что касается генирировать базовые классы модели ИМХО, будет несколько неудобно!!! Это во первых, во вторых, скорее всего будет дублироваие кода, пусть и небольшое. Ну и вывод из 2-ого, код будет сложно поддерживать…

  8. 8. FX Poster Says:

    Глянь на симфони еще разок. Там классы моделей именно что генерятся. ;)

  9. 9. Zeke Fast Says:

    Не согласен что будет сложно поддерживать! Мне, да и другим разработчикам не важно что в base классах, я знаю что это работает, если надо добавить поле перегенерю всё и поле будет добавлено. Никаких проблем с поддержкой, А дублирование кода это плохо когда ты занимаешься поддержкой, а когда генератор, то машина-зверь – всё стерпит!
    Зато генерация классный способ улучшить производительность системы!! Вместо абстракций и иерархий у тебя есть конечный код, под конкретную ситуацию, который работает быстрее чем иерархии… конечно всё зависит от генератора, но я думаю ребята постараются ;-)

  10. 10. FX Poster Says:

    Честно сказать, когда я этот пост писал – я слабо представлял, что это вообще такое. Теперь, после опыта работы с симфони, готов признать, что это очень удобно.

Leave a Reply