Некоторое время назад (когда точно – сказать не могу) появился класс Zend_Db_Table. В мануале про него информации нет, что довольно странно.
Заглянув в исходный код, можно заметить, что функциональности этот класс не имеет. Это абстрактный класс, и единственное, что он делает – наследует Zend_Db_Table_Abstract. Зачем он нужен – совершенно неясно. Поделюсь с вами своими мыслями на это тему.
Zend_Db_Table_Abstract – базовый класс, определяющий основной функционал. Он предназначен не для наследования напрямую классами таблиц, а для наследования классами, расширяющими его. Например, его наследует Zend_Db_Table. Пусть сам он пока пустой, но, мне кажется, очень скоро в него будет добавлен специфичный функционал.
Например, создаём мы свой абстрактный класс таблиц для того, чтобы расширить функционал Zend_Db_Table_Abstract. В таком случае, назовём мы свой класс App_Db_Table, и наследовать он будет Zend_Db_Table_Abstract. А если мы собираемся использовать базовый Zend_Db_Table без расширения функционала, то в своих классах таблиц мы будем наследовать Zend_Db_Table.
Надеюсь, объяснил не слишком путано. Повторюсь, всё, сказанное здесь, моё личное мнение.
Вопрос к читателям – что вы думаете по этому поводу? Есть логика в моих рассуждениях, или же я не прав?

2 Comments

  1. Kupuyc says:

    Если взглянуть на лог хранилища, то картина скорее противоположная (я основываюсь на версии 1.5.2) – файл находится там с самого начала (правка 6) и содержал абстрактный код работы с таблицей. Сейчас этот код перенесен в Zend_Db_Table_Abstract. Сделано это примерно в 8063 правке (более точно я не копал). Возможно имеющее место быть положение вещей – обратная совместимость, а возможно иная политика, тут я соглашусь с автором – можно только гадать.

  2. Сергей Митрошин says:

    В таком случае действительно более вероятно то, что Zend_Db_Table оставлен для совместимости. Всё встаёт на свои места.

Leave a Reply