J'ai vu un code comme celui-ci:
JHtml::_("script", "path/to/script.js");
JHtml::_("stylesheet", "path/to/stylesheet.css");
JHtml::_("jquery.framework");
Que fait la fonction de soulignement ici?
Le plus souvent
JHtml::_("script", "path/to/script.js");
JHtml::_("stylesheet", "path/to/stylesheet.css");
JHtml::_("jquery.framework");
appellera
JHtml::Script("path/to/script.js");
JHtml::Stylesheet("path/to/stylesheet.css");
JHtmlJquery::framework();
Cependant, il y a une petite différence entre les deux appels. Le premier permet aux plugins système de remplacer les classes principales.
Supposons que vous n'aimiez pas la version de JQuery fournie avec Joomla pour une raison amusante. Vous pouvez maintenant créer un plugin système et, dans l'événement onAfterInitialise
, vous venez d'enregistrer une méthode différente pour l'appel jquery.framework
. Vous pouvez le faire en utilisant JHtml::register('jquery.framework', 'ClassToLoad::MethodToCall')
Michael Babker a écrit un exemple de plugin qui permettrait de changer la version chargée Bootstrap). Cela peut aider à comprendre comment cela fonctionne.
C'est simplement un raccourci, pour sauver la saisie, je suppose. La documentation l'appelle une méthode de chargeur de classe.
JHtml::_("script", "path/to/script.js");
# is the same as:
JHtml::script("path/to/script.js");
JHtml::_("stylesheet", "path/to/stylesheet.css");
# is the same as:
JHtml::stylesheet("path/to/stylesheet.css");
JHtml::_("jquery.framework");
# is the same as:
require_once 'libraries/cms/html/jquery.php';
JHtmlJquery::framework();
Il y a un algorithme qui transforme le premier argument en nom de fonction correct, vous pouvez regarder le code source dans le fichier libraries/cms/html/html.php
.