Classes noyau XOOPS
Le noyau XOOPS fournit le cadre fondamental pour l’amorçage du système, la gestion des configurations, la gestion des événements du système et l’utilitaire principal. Ces classes forment l’épine dorsale de l’application XOOPS.
Architecture système
Section intitulée « Architecture système »graph TD A[XoopsKernel] -->|initialise| B[Gestionnaire de configuration] A -->|gère| C[Conteneur de services] A -->|gère| D[Crochets système] A -->|enregistre| E[Services principaux]
B -->|charge| F[config.php] B -->|gère| G[Configurations de modules]
C -->|contient| H[Base de données] C -->|contient| I[Logger] C -->|contient| J[Moteur modèles] C -->|contient| K[Gestionnaire de modules]
E -->|enregistre| L[Service utilisateur] E -->|enregistre| M[Service module] E -->|enregistre| N[Service base de données]Classe XoopsKernel
Section intitulée « Classe XoopsKernel »La classe noyau principale qui initialise et gère le système XOOPS.
Vue d’ensemble de la classe
Section intitulée « Vue d’ensemble de la classe »namespace Xoops;
class XoopsKernel{ private static ?XoopsKernel $instance = null; protected ServiceContainer $services; protected ConfigurationManager $config; protected array $modules = []; protected bool $isLoaded = false;}getInstance
Section intitulée « getInstance »Récupère l’instance singleton du noyau.
public static function getInstance(): XoopsKernelRetour : XoopsKernel - L’instance singleton du noyau
Exemple :
$kernel = XoopsKernel::getInstance();Le processus d’amorçage du noyau suit ces étapes :
- Initialisation - Définir gestionnaires d’erreurs, définir constantes
- Configuration - Charger fichiers de configuration
- Enregistrement de services - Enregistrer services principaux
- Détection de modules - Analyser et identifier modules actifs
- Initialisation base de données - Connexion à la base de données
- Nettoyage - Préparer pour la gestion des requêtes
public function boot(): voidExemple :
$kernel = XoopsKernel::getInstance();$kernel->boot();Méthodes conteneur de services
Section intitulée « Méthodes conteneur de services »registerService
Section intitulée « registerService »Enregistre un service dans le conteneur de services.
public function registerService( string $name, callable|object $definition): voidParamètres :
| Paramètre | Type | Description |
|---|---|---|
$name | string | Identifiant du service |
$definition | callable|object | Fabrique de service ou instance |
Exemple :
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});getService
Section intitulée « getService »Récupère un service enregistré.
public function getService(string $name): mixedParamètres :
| Paramètre | Type | Description |
|---|---|---|
$name | string | Identifiant du service |
Retour : mixed - Le service demandé
Exemple :
$database = $kernel->getService('database');$logger = $kernel->getService('logger');hasService
Section intitulée « hasService »Vérifie si un service est enregistré.
public function hasService(string $name): boolExemple :
if ($kernel->hasService('cache')) { $cache = $kernel->getService('cache');}Gestionnaire de configuration
Section intitulée « Gestionnaire de configuration »Gère la configuration d’application et les paramètres de modules.
Vue d’ensemble de la classe
Section intitulée « Vue d’ensemble de la classe »namespace Xoops\Core;
class ConfigurationManager{ protected array $config = []; protected array $defaults = []; protected string $configPath;}Méthodes
Section intitulée « Méthodes »Charge la configuration depuis fichier ou tableau.
public function load(string|array $source): voidParamètres :
| Paramètre | Type | Description |
|---|---|---|
$source | string|array | Chemin fichier configuration ou tableau |
Exemple :
$config = $kernel->getService('config');$config->load(XOOPS_ROOT_PATH . '/include/config.php');$config->load(['sitename' => 'Mon Site', 'admin_email' => 'admin@example.com']);Récupère une valeur de configuration.
public function get(string $key, mixed $default = null): mixedParamètres :
| Paramètre | Type | Description |
|---|---|---|
$key | string | Clé configuration (notation pointée) |
$default | mixed | Valeur par défaut si non trouvée |
Retour : mixed - Valeur configuration
Exemple :
$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email', 'admin@example.com');Définit une valeur de configuration.
public function set(string $key, mixed $value): voidParamètres :
| Paramètre | Type | Description |
|---|---|---|
$key | string | Clé configuration |
$value | mixed | Valeur configuration |
Exemple :
$config->set('sitename', 'Nouveau nom de site');$config->set('features.cache_enabled', true);Crochets système
Section intitulée « Crochets système »Les crochets système permettent aux modules et plugins d’exécuter du code à des points spécifiques du cycle de vie de l’application.
Classe HookManager
Section intitulée « Classe HookManager »namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Méthodes
Section intitulée « Méthodes »Enregistre un point de crochet.
public function addHook(string $name): voidParamètres :
| Paramètre | Type | Description |
|---|---|---|
$name | string | Identifiant du crochet |
Exemple :
$hooks = $kernel->getService('hooks');$hooks->addHook('system.startup');$hooks->addHook('user.login');$hooks->addHook('module.install');Attache un écouteur à un crochet.
public function listen( string $hookName, callable $callback, int $priority = 10): voidParamètres :
| Paramètre | Type | Description |
|---|---|---|
$hookName | string | Identifiant du crochet |
$callback | callable | Fonction à exécuter |
$priority | int | Priorité d’exécution (plus haut s’exécute en premier) |
Exemple :
$hooks->listen('user.login', function($user) { error_log('Utilisateur ' . $user->uname . ' connecté');}, 10);Exécute tous les écouteurs pour un crochet.
public function trigger( string $hookName, mixed $arguments = null): arrayParamètres :
| Paramètre | Type | Description |
|---|---|---|
$hookName | string | Identifiant du crochet |
$arguments | mixed | Données à passer aux écouteurs |
Retour : array - Résultats de tous les écouteurs
Exemple :
$results = $hooks->trigger('system.startup');$results = $hooks->trigger('user.created', $newUser);Vue d’ensemble des services principaux
Section intitulée « Vue d’ensemble des services principaux »Le noyau enregistre plusieurs services principaux lors de l’amorçage :
| Service | Classe | Objectif |
|---|---|---|
database | XoopsDatabase | Couche d’abstraction base de données |
config | ConfigurationManager | Gestion configuration |
logger | Logger | Journalisation d’application |
template | XoopsTpl | Moteur modèles |
user | UserManager | Service de gestion utilisateurs |
module | ModuleManager | Gestion des modules |
cache | CacheManager | Couche de cache |
hooks | HookManager | Crochets d’événements système |
Meilleures pratiques
Section intitulée « Meilleures pratiques »- Amorçage unique - Appeler
boot()une seule fois lors du démarrage de l’application - Utiliser le conteneur de services - Enregistrer et récupérer les services via le noyau
- Gérer les crochets tôt - Enregistrer les écouteurs de crochets avant de les déclencher
- Journaliser les événements importants - Utiliser le service logger pour le débogage
- Mettre en cache la configuration - Charger la configuration une fois et réutiliser
- Gérer les erreurs - Toujours configurer les gestionnaires d’erreurs avant de traiter les requêtes
Documentation connexe
Section intitulée « Documentation connexe »- ../Module/Module-System - Système de modules et cycle de vie
- ../Template/Template-System - Intégration du moteur modèles
- ../User/User-System - Authentification et gestion des utilisateurs
- ../Database/XoopsDatabase - Couche base de données
Voir aussi : Code source noyau XOOPS