Diferencia entre / Controlador y / controladores

43

Una pregunta que he querido hacer desde hace mucho tiempo, más teórica que cualquier otra cosa.

Estoy totalmente versado en el desarrollo de extensiones utilizando la estructura de archivos del módulo Magento normal. Sin embargo, noté que cuando miraba algunas de las 'extensiones' de Mage, algunas contienen un directorio / Controller. ¿Cuál es el propósito de estos controladores y en qué se diferencian de los que se usan normalmente dentro del directorio / controllers?

Puedo ver que los nombres están estructurados de manera diferente, así que estoy reuniendo que se cargan automáticamente de una manera diferente, pero ¿para qué sirven las clases / Controlador?

Gracias a todos

thebluefox
fuente

Respuestas:

45

La diferencia está en la carga automática, como has mencionado. En general, los archivos que están en / Controller son clases abstractas (o primarias) de las que heredan las clases en / controllers .

Magento no está diseñado para conocer el directorio / Controller, es más una cuestión de convención. Los nombres de clase indican dónde encontrar estos padres en el disco y el autocargador los ubica. Verás esto en Mage_Sales:

class Mage_Sales_OrderController extends Mage_Sales_Controller_Abstract

Aquí, el módulo de ventas ubica los controladores dentro app/code/core/Mage/Sales/controllersy el controlador cargado le dice al autocargador que ubique a su padre en él app/code/core/Mage/Sales/Controller.

Esto se hace para proporcionar una separación de preocupaciones y para permitir que las clases de controladores concretos hereden una funcionalidad común.

philwinkle
fuente
Eso tiene mucho sentido y, ahora que lo has explicado, ¡en realidad parece bastante obvio! Gracias Phil!
thebluefox