Рекомендуемая практика с компонентами БД Zend Framework? - PullRequest
4 голосов
/ 26 июня 2011

Сначала немного контекста:

Я пишу проект на 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?

1 Ответ

0 голосов
/ 26 июня 2011

Лучшая практика, которую я могу рекомендовать с Zend DB - это ... не используйте ее. Компоненты очень простые и не очень помогают. Если вы можете, используйте вместо этого Doctrine, который намного лучше.

...