Я запрограммировал в Rails, Django, Zend и CakePHP. Также Wordpress и Drupal.
Теперь я "догоняю скорость" как довольно большое приложение в CodeIgniter.
Как правило, мой опыт работы со средами MVC привел меня к убеждению, что модели представляют бизнес-логику по отношению к фактическим таблицам базы данных. В документах CodeIgniter и в базе кода, которую я анализирую, я вижу созданные модели, которые представляют собой нечто столь же расплывчатое, как страница. Большая часть бизнес-логики записана непосредственно в эти модели, и они включают другие фактические модели данных. Я не уверен, что это идеально и следует MVC.
Должны ли модели создаваться за пределами моделей данных?
Также допустим, что у меня есть модель данных, представляющая пользователя (user
таблица в БД). В этой пользовательской таблице есть столбец с именем gender
типа enum ('male', 'female'). Теперь я хочу заполнить выпадающий список полами из столбца enum.
Где наиболее целесообразно поместить эту логику?
Модель пользователя - это объект, используемый для представления отдельного пользователя или строки в БД ... верно? Таким образом, кажется неуместным включать функцию в пользовательскую модель / класс под названием «get_gender_options», потому что, хотя функция связана с пользовательской таблицей, она НЕ относится к одному объекту пользователя. В Zend такая логика может быть встроена в сам объект формы.
Не существует "правильного" ответа, только один, который мы можем считать наиболее подходящим ...