Кажется ли каждая таблица в Zend сопоставляться с собственным классом?

97
9

Я не предлагаю, чтобы все модели были таблицами.


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


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


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

спросил(а) 2021-01-19T21:47:56+03:00 2 месяца, 3 недели назад
1
Решение
123

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


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



В книге, Fowler не так уж жестко, говоря, что


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


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


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


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

ответил(а) 2021-01-19T21:47:56+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема