Сначала немного контекста:
Я пишу проект на 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);
}
Посмотрев некоторое время на stackoverflow в надежде найти указатели, как наиболее эффективно организовать модели, я наткнулся на еще одно другое рекомендуемое решение.
Теперь связанное выше решение выглядит очень чистым, но все еще оставляет в моей голове один вопрос, прежде чем я отправлюсь писать свой код:
Следует ли мне использовать подклассы 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?