Каждая ли таблица в Zend должна отображаться в свой собственный класс? - PullRequest
4 голосов
/ 27 августа 2010

Я не утверждаю, что все модели являются таблицами.

Я спрашиваю, должна ли каждая отдельная таблица иметь собственный класс, определенный специально для нее при использовании Zend?Есть ли способ уйти от этого неуклюжего кодирования котельной плиты?Мы только начинаем изучать Zend (надеясь покинуть процедурную PHP-землю!), И мой коллега считает, что это может занять довольно много времени.

Является ли это причиной для людей, использующих решения ORM?Есть ли другой способ обойти это?

Спасибо за ваши ответы.

1 Ответ

7 голосов
/ 27 августа 2010

Классы Zend Table следуют шаблону Table Data Gateway , который по определению

... содержит весь SQL для доступа к одной таблице или представлению: выбирает, вставляет, обновляет и удаляет.Другой код вызывает свои методы для всего взаимодействия с базой данных.

В книге , Фаулер не так уж жесток в этом, говоря, что

для очень простых случаев вы можете иметь одну TDG, которая обрабатывает все методы для всех таблиц.Вы даже можете иметь один для представлений или даже для интересных запросов, которые не хранятся в базе данных в качестве представлений.

Однако, за исключением возможности использования представлений, Zend_Db_Table для этого не приспособлен.,Вы можете создавать запросы к нескольким таблицам, но они должны выполняться через Zend_Db_Adapter напрямую или - при использовании объединений - путем отключения проверки целостности.В противном случае вы должны использовать API, предлагаемый Zend_Db_Table Relationships

Так что да, один экземпляр должен соответствовать одной таблице или представлению.Вам не нужно создавать классы для этого, хотя, если вы не планируете расширять классы.Zend_Db_Table_Definitions позволяют настраивать Zend_Db_Table экземпляров на лету.

Обратите внимание, что TDG является архитектурным шаблоном DataSource, а не объектно-реляционным шаблоном.Его цель - не помочь с impedance-mismatch , а отделить код доступа к базе данных от бизнес-логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...