Diferença entre / Controller e / controllers

43

Uma pergunta que pretendo fazer há muito tempo, mais teórica do que qualquer outra coisa.

Eu sou totalmente versado no desenvolvimento de extensões usando a estrutura normal de arquivos do módulo Magento. Notei, porém, ao olhar para algumas das 'extensões' do Mage, que algumas contêm um diretório / Controller. Qual é o objetivo desses controladores e como eles diferem dos usados ​​normalmente no diretório / controllers?

Percebo que os nomes estão estruturados de maneira diferente; portanto, estou reunindo que eles são carregados automaticamente de uma maneira diferente, mas qual é a finalidade das classes / Controller?

Obrigado a todos

thebluefox
fonte

Respostas:

45

A diferença está no carregamento automático, como você mencionou. Em geral, os arquivos que estão em / Controller são classes abstratas (ou principais) das quais as classes em / controllers são herdadas .

O Magento não foi criado para estar ciente do diretório / Controller - é mais uma questão de convenção. Os nomes de classe sugerem onde encontrar esses pais no disco e o carregador automático os localiza. Você verá isso em Mage_Sales:

class Mage_Sales_OrderController extends Mage_Sales_Controller_Abstract

Aqui, o módulo de vendas localiza os controladores dentro app/code/core/Mage/Sales/controllerse o controlador carregado diz ao carregador automático para localizar seu pai app/code/core/Mage/Sales/Controller.

Isso é feito para fornecer uma separação de preocupações e permitir que classes de controlador concretas herdem funcionalidades comuns.

philwinkle
fonte
Isso faz todo o sentido e, agora que você explicou, parece bastante óbvio! Obrigado Phil!
thebluefox