Dans Joomla, lorsque nous développons une extension, nous fabriquons une classe qui étend une autre classe, telle que JModule ou JPlugin, et nous devons utiliser la convention de nommage pour le nommer. Par exemple, lorsque nous créons un plugin, nous devons utiliser le fichier plg comme convention de nommage pour le nom de la classe. Je suis confus comment cette classe fonctionne sans en faire une instance?
Je suppose que vous voulez dire que vous utilisez la classe PlgContentMyClass
mais vous n'avez pas à l'appeler comme suit:
$foo = new PlgContentMyClass;
Parce que Joomla suit le modèle de l'observateur, ce qui signifie que toutes les sous-classes (dans ce cas PlgContentMyClass
) de JPlugin
s'enregistrent automatiquement dans la classe JEventDispatcher
(globale). .
Par conséquent, ils sont automatiquement instanciés et vous n'avez pas besoin de le faire vous-même.
Les classes de plug-in sont instanciées "automatiquement", au moment où Joomla déclenche un événement de plug-in. En fonction de l'événement Plugin généré, les classes de plug-in correspondantes seront instanciées dans des objets et toutes les méthodes de ce nom d'événement seront exécutées.
Les événements du plugin Joomla sont déclenchés par la classe JEventDispatcher
qui implémente le modèle de conception de l'observateur , où sont observables et les plugins sont observateurs .