Разработчики 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 на русский язык?…






December 21st, 2007 at 23:31
Только не ActiveRecord! Лучше нормальную генерацию, чем AR!
p.s. каким боком AR относится к скаффолдингу? :)
December 21st, 2007 at 23:39
1. Гм. Что у нас на данный момент получается удобнее AR в плане обработки и валидации?
2. Через AR очень удобно реализовывается CRUD, т.к. есть метаданные о полях и способы их валидации.
А так - что ты генерировать собрался?
December 21st, 2007 at 23:46
1. Генерация кода.
2. Генерацией удобней.
Как что? Базовые классы для моделей конечно:
class BasePost { сгенерированные методы }
class Post extends BasePost{ мои методы }
December 21st, 2007 at 23:47
А скаффолдингом не обязательно генерится что-то, зависимое от AR.
December 21st, 2007 at 23:52
Мля… Я запутался :)
December 22nd, 2007 at 00:01
Т.е. по сути ты предлагаешь генерить классы, которые будут использоваться вместо Zend_Db_Table? :) Хер они на это пойдут. :)
December 22nd, 2007 at 10:05
Кстати Scaffolding уже есть в Symfony ;)(если я правильно понимаю его смысл). Что касается генирировать базовые классы модели ИМХО, будет несколько неудобно!!! Это во первых, во вторых, скорее всего будет дублироваие кода, пусть и небольшое. Ну и вывод из 2-ого, код будет сложно поддерживать…
December 22nd, 2007 at 13:45
Глянь на симфони еще разок. Там классы моделей именно что генерятся. ;)
January 30th, 2008 at 06:39
Не согласен что будет сложно поддерживать! Мне, да и другим разработчикам не важно что в base классах, я знаю что это работает, если надо добавить поле перегенерю всё и поле будет добавлено. Никаких проблем с поддержкой, А дублирование кода это плохо когда ты занимаешься поддержкой, а когда генератор, то машина-зверь - всё стерпит!
Зато генерация классный способ улучшить производительность системы!! Вместо абстракций и иерархий у тебя есть конечный код, под конкретную ситуацию, который работает быстрее чем иерархии… конечно всё зависит от генератора, но я думаю ребята постараются ;-)
January 30th, 2008 at 22:46
Честно сказать, когда я этот пост писал - я слабо представлял, что это вообще такое. Теперь, после опыта работы с симфони, готов признать, что это очень удобно.