¿Por qué está cen minúsculas en el controllersnombre de la carpeta? ¿Mientras que Modelo, Bloque y Ayudante comienzan con una letra mayúscula?
                    
                        controllers
                                
                    
                    
                        Muthu
fuente
                
                fuente

Respuestas:
Las clases ubicadas en las
controllerscarpetas son una clase especial de clases.No puede reescribirlos de la misma manera que reescribe un modelo o un bloque usando la
<rewrite>etiquetaconfig.xml, no puede crear una instancia usando una fábrica como lo hace para los modelos (Mage::getModel()) o con ayudantes (Mage::helper) o con bloques (Mage::app()->getLayout()->createBlock()).Quiero decir que hay
Mage::getControllerInstance()pero eso es un poco diferente. Más sobre esto más tarde.Puede notar que en realidad no siguen la regla de nomenclatura como las otras clases.
El trabajo
controllersno se encuentra en el nombre de la clase.Tomemos por ejemplo el controlador encontrado en
Mage/Catalog/controllers/CategoryController.php.El nombre de la clase es
Mage_Catalog_CategoryController.No puedo darte una respuesta 100% segura, solo un desarrollador principal puede hacerlo.
Pero supongo que alguien no quería que los controladores se cargaran automáticamente.
Echa un vistazo a este método
Mage_Core_Controller_Varien_Router_Standard::match. Es grande y aterrador, pero ese es el que asigna una url a un controlador y una acción.Se realizan muchos cálculos, pero en alguna parte hay esta línea:
Si cavamos más profundo en el
_validateControllerClassName, terminarás engetControllerFileNameese aspecto:y en el
_includeControllerClassque, básicamente, hace esto:include $controllerFileName;.Observe el código rígido
controllersen el métodogetControllerFileNamey observe que el archivo del controlador solo se incluye. Así que no hay carga automática.Finalmente, la fábrica de controladores
Mage::getControllerInstance()no localiza la clase y no busca en las reescrituras. Simplemente hacereturn new $class($request, $response, $invokeArgs);dónde$classestá la clase de controlador.Nota al margen : en algunos módulos hay una carpeta llamada
Controller(con C mayúscula) y las clases siguen el nombre de clase estándar. Esas clases no son realmente controladores. Se utilizan como clases principales para otros controladores en el módulo o como enrutadores.Nota al margen 2 : Esto no existe en Magento 2. Todos los controladores están ubicados en la
Controllercarpeta.fuente
Marius eres tan genial: D
Mi respuesta solo hubiera sido:
Este es el estándar de Zend Framework: http://framework.zend.com/manual/1.12/en/zend.controller.quickstart.html
fuente
controllersy supongo que el equipo central de Mage sería un experto en Zend Framework. Prestigio. Gracias por compartir ese enlace