Aller au contenu principal
Version: 26.0.9.0

Resolvers

Les Resolvers sont des classes utilitaires chargées de localiser et d'instancier dynamiquement les classes d'Elementum (contrôleurs, fonctions Twig, attributs, etc.).

Organisation

Depuis la version 26.0.8.6, les resolvers ont été déplacés de src/Helpers/ vers src/Resolvers/ pour une meilleure séparation des responsabilités :

Ancien cheminNouveau chemin
src/Helpers/ClassResolver.phpsrc/Resolvers/ClassResolver.php
src/Helpers/ControllerResolver.phpsrc/Resolvers/ControllerResolver.php
Mise à jour nécessaire

Si vous importiez directement ces classes depuis Elementum\Helpers, mettez à jour vos use statements vers Elementum\Resolvers.

ClassResolver

ClassResolver permet de scanner les dossiers à la recherche de classes implémentant une interface ou un trait spécifique, et de les charger dynamiquement.

Utilisation typique

use Elementum\Resolvers\ClassResolver;

// Récupérer les chemins des classes Twig Functions
$paths = ClassResolver::paths(ClassResolver::TWIG_FUNCTIONS_PATH_SUFFIX);

// Charger toutes les classes et exécuter un callback
ClassResolver::loadElementumClasses($paths, 'Twig\\Functions', function ($class) {
    // $class contient le nom de classe complet (FQCN)
    // ex: Elementum\Theme\Twig\Functions\MyFunction
});

Constantes utiles

  • TWIG_FUNCTIONS_PATH_SUFFIX — Chemin relatif vers les fonctions Twig (app/Twig/Functions)
  • TWIG_FILTERS_PATH_SUFFIX — Chemin relatif vers les filtres Twig (app/Twig/Filters)
  • ADMIN_PAGE_PATH_SUFFIX — Chemin relatif vers les pages admin (app/Admin/Pages)
  • POST_TYPE_PATH_SUFFIX — Chemin relatif vers les post types (app/PostTypes)

ControllerResolver

ControllerResolver est spécialisé dans la résolution des contrôleurs Elementum. Il s'occupe de :

  • Localiser les classes contrôleurs dans les thèmes et plugins
  • Instancier les contrôleurs avec leurs dépendances
  • Gérer la résolution des attributs (#[Action], #[Filter], #[Hook], etc.)

Utilisation

Ce resolver est principalement utilisé en interne par le kernel Elementum. Vous n'avez généralement pas besoin de l'utiliser directement dans votre code.

Bonnes pratiques

  • Préférez l'utilisation des Facades ou des services enregistrés plutôt que d'appeler directement les resolvers
  • Les resolvers sont conçus pour être utilisés par le kernel ; leur API interne peut évoluer
  • Si vous avez besoin de charger dynamiquement des classes, étendez ClassResolver plutôt que de le dupliquer