Рекомендуемая практика с компонентами БД Zend Framework?

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

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

person alxbl    schedule 25.06.2011    source источник


Ответы (1)


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

person Maxence    schedule 26.06.2011
comment
Спасибо за подсказку, я немного изучал Doctrine, но похоже, что на то, чтобы научиться ее использовать, может потребоваться время. У вас есть ресурсы, которые вы бы порекомендовали мне посмотреть? (Помимо их страницы проекта) - person alxbl; 26.06.2011
comment
Нет, я использую только проектную документацию. Это очень хорошо. - person Maxence; 29.06.2011