Разница между / контроллером и / контроллерами


43

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

Я полностью разбираюсь в разработке расширений, используя обычную файловую структуру модуля Magento. Я заметил, что, глядя на некоторые «расширения» Mage, некоторые из них содержат каталог / Controller. Какова цель этих контроллеров и чем они отличаются от тех, которые обычно используются в директории / controllers dir?

Я вижу, что имена структурированы по-разному, поэтому я собираю, что они автоматически загружаются по-другому, но для чего служат классы / Controller?

Спасибо всем

Ответы:


45

Разница в автозагрузке, как вы уже упоминали. В общем случае файлы в / Controller являются абстрактными (или родительскими) классами, от которых наследуются классы в / controllers .

Magento не создан для того, чтобы знать каталог / Controller - это скорее вопрос соглашения. Имена классов подсказывают, где найти этих родителей на диске, и автозагрузчик находит их. Вы увидите это в Mage_Sales:

class Mage_Sales_OrderController extends Mage_Sales_Controller_Abstract

Здесь, модуль продаж находит контроллеры внутри, app/code/core/Mage/Sales/controllersи загруженный контроллер говорит автозагрузчику, чтобы найти его родителя app/code/core/Mage/Sales/Controller.

Это делается для обеспечения разделения интересов и предоставления возможности классам конкретных контроллеров наследовать общие функциональные возможности.


Это имеет полный смысл, и, как вы уже объяснили, на самом деле кажется довольно очевидным! Спасибо, Фил!
thebluefox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.