Сначала немного контекста:
Я пишу проект на PHP с использованием Zend Framework, и у меня есть несколько диаграмм E / R из прошлых встреч с клиентом. Схема базы данных была написана для MySQL, и теперь пришло время реализовать мои модели в Zend. Я довольно новичок в Zend, поэтому я не знаю, как начать писать этот код красиво.
Первое, что я заметил, читая их документацию, это то, что в кратком руководстве использовался шаблон шлюз данных , но их справочная страница Zend_DB этого не сделала.
// Data Gateway Sample
// <application/models/UserMapper.php>
class Application_Model_UserMapper()
{
// ... Methods to read/write from DB
}
// <application/models/DbTable/Users.php>
class Application_Model_DbTable_Users
{
// Relationship infromation etc.
}
// <application/models/User.php>
class Application_Model_User
{
// At last, model specific data
// using UserMapper->find($id, $model);
}
Пролистав некоторое время в стеке и надеясь найти указатели на то, как наиболее эффективно организовать модели, я обнаружил еще одно другое рекомендованное решение.
Теперь приведенное выше решение выглядит очень чистым, но все еще оставляет один вопрос в моей голове, прежде чем я отправлюсь писать свой код:
Должен ли я использовать подклассы Row_Abstract для хранения модели данных или я должен создавать отдельные модели, которые не имеют никакой другой цели, кроме как хранить полученные данные?
Последнее похоже на большое количество дублирующих усилий (Model_DbTable, Model, Mapper, [Row?])
// What I have in mind
// <application/models/DbTable/Users.php>
class Application_Model_DbTable_Users
{
// Relationship infromation etc.
}
// <application/models/User.php
class Application_Model_User extends Zend_Db_Table_Row_Abstract
{
// Model stuff here
// Relationship fetch helpers here
// ...?
}
// Perhaps a Rowset_Abstract class if it is ever needed?