Différence entre / Contrôleur et / Contrôleurs

43

Une question que je voulais poser depuis des siècles, plus théorique qu'autre chose.

Je connais parfaitement le développement d'extensions à l'aide de la structure de fichier de module Magento normale. J'ai remarqué cependant que certaines "extensions" de Mage contenaient un répertoire / Controller. Quel est le but de ces contrôleurs et en quoi diffèrent-ils de ceux utilisés normalement dans le répertoire / controllers?

Je peux voir que les noms sont structurés différemment, alors je suppose qu'ils sont chargés automatiquement de manière différente, mais à quoi servent les classes / Controller?

Merci a tous

thebluefox
la source

Réponses:

45

La différence réside dans le chargement automatique, comme vous l'avez mentionné. En général, les fichiers contenus dans / Controller sont des classes abstraites (ou parent) dont les classes de / controllers héritent .

Magento n'est pas conçu pour connaître le répertoire / Controller - c'est davantage une question de convention. Les noms de classe indiquent où trouver ces parents sur le disque et l'autochargeur les localise. Vous verrez ceci dans Mage_Sales:

class Mage_Sales_OrderController extends Mage_Sales_Controller_Abstract

Ici, le module de vente localise les contrôleurs internes app/code/core/Mage/Sales/controllerset le contrôleur chargé indique à l'autochargeur de localiser son parent app/code/core/Mage/Sales/Controller.

Ceci est fait pour séparer les problèmes et permettre aux classes de contrôleurs concrètes d'hériter des fonctionnalités communes.

philwinkle
la source
Cela semble tout à fait logique et, maintenant que vous l'avez expliqué, cela semble plutôt évident! Merci Phil!
thebluefox