La classe JHtml est un classe utilitaire pour preparer du code html.
La méthode _ est une méthode statique qui est en la porte d'entrée de tous les appels.
L'appel se fait ainsi : JHtml::_('Fichier.methode,x,y,...).
Elle exécutera la méthode statique "méthode" de la classe JHtmlFichier, trouvée dans le fichier.php dans un des chemins de recherche.
Le chemin par defaud étant /libraries/cms/html.
Cette syntaxe est aussi possible : JHtml::_('extension.fichier.methode,x,y,...); qui appellera la méthode extensionfichier::methode definie dans fichier.php
Tous les paramètres suivants x,y,z... seront passés à la méthode en question.
Pour rajouter des dossiers de recherche, donc ceux où vous aurez définis vos classe appelées par JHtml::_(), il faut utiliser la méthode JHtml::addIncludePath par exemple :
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
Ainsi on ira chercher la classe extensionfichier dans un fichier fichier.php qui sera situé dans le dossier helpers/html de votre composant.
Avec le passage à Joomla 4 en remplace JHtml par HTMLHelper avec l'instruction
use Joomla\CMS\HTML\HTMLHelper;
en début du fichier php.
Il semblerait (à tester) que l'on puisse utiliser indifféremment JHtml::_(fichier.methode) ou JHtmlFichier::methode(), sauf qu'avec la première les classes sont cherchées dynamiquement.
Vous n'avez donc pas besoin de déclarer les classes une par une au framework (par un JLoader::register), seule la déclaration du dossier (par le HTMLHelper::addIncludePath) est nécessaire.
Voir aussi :
-
https://api.joomla.org/cms-3/classes/Joomla.CMS.HTML.HTMLHelper.html
- le fichier /librairies/src/HTML/HTMLHelper.php où est defini la classe HTMLHelper