web-dev-qa-db-fra.com

Comment la classe fonctionne-t-elle sans en créer une instance dans joomla?

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?

2
hhgh4269

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.

1
Lodder

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 .

1
FFrewin