Aller au contenu

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.

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]

La classe noyau principale qui initialise et gère le système XOOPS.

namespace Xoops;
class XoopsKernel
{
private static ?XoopsKernel $instance = null;
protected ServiceContainer $services;
protected ConfigurationManager $config;
protected array $modules = [];
protected bool $isLoaded = false;
}

Récupère l’instance singleton du noyau.

public static function getInstance(): XoopsKernel

Retour : XoopsKernel - L’instance singleton du noyau

Exemple :

$kernel = XoopsKernel::getInstance();

Le processus d’amorçage du noyau suit ces étapes :

  1. Initialisation - Définir gestionnaires d’erreurs, définir constantes
  2. Configuration - Charger fichiers de configuration
  3. Enregistrement de services - Enregistrer services principaux
  4. Détection de modules - Analyser et identifier modules actifs
  5. Initialisation base de données - Connexion à la base de données
  6. Nettoyage - Préparer pour la gestion des requêtes
public function boot(): void

Exemple :

$kernel = XoopsKernel::getInstance();
$kernel->boot();

Enregistre un service dans le conteneur de services.

public function registerService(
string $name,
callable|object $definition
): void

Paramètres :

ParamètreTypeDescription
$namestringIdentifiant du service
$definitioncallable|objectFabrique de service ou instance

Exemple :

$kernel->registerService('custom.handler', function($c) {
return new CustomHandler();
});

Récupère un service enregistré.

public function getService(string $name): mixed

Paramètres :

ParamètreTypeDescription
$namestringIdentifiant du service

Retour : mixed - Le service demandé

Exemple :

$database = $kernel->getService('database');
$logger = $kernel->getService('logger');

Vérifie si un service est enregistré.

public function hasService(string $name): bool

Exemple :

if ($kernel->hasService('cache')) {
$cache = $kernel->getService('cache');
}

Gère la configuration d’application et les paramètres de modules.

namespace Xoops\Core;
class ConfigurationManager
{
protected array $config = [];
protected array $defaults = [];
protected string $configPath;
}

Charge la configuration depuis fichier ou tableau.

public function load(string|array $source): void

Paramètres :

ParamètreTypeDescription
$sourcestring|arrayChemin 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): mixed

Paramètres :

ParamètreTypeDescription
$keystringClé configuration (notation pointée)
$defaultmixedValeur 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): void

Paramètres :

ParamètreTypeDescription
$keystringClé configuration
$valuemixedValeur configuration

Exemple :

$config->set('sitename', 'Nouveau nom de site');
$config->set('features.cache_enabled', true);

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.

namespace Xoops\Core;
class HookManager
{
protected array $hooks = [];
protected array $listeners = [];
}

Enregistre un point de crochet.

public function addHook(string $name): void

Paramètres :

ParamètreTypeDescription
$namestringIdentifiant 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
): void

Paramètres :

ParamètreTypeDescription
$hookNamestringIdentifiant du crochet
$callbackcallableFonction à exécuter
$priorityintPriorité 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
): array

Paramètres :

ParamètreTypeDescription
$hookNamestringIdentifiant du crochet
$argumentsmixedDonnées à passer aux écouteurs

Retour : array - Résultats de tous les écouteurs

Exemple :

$results = $hooks->trigger('system.startup');
$results = $hooks->trigger('user.created', $newUser);

Le noyau enregistre plusieurs services principaux lors de l’amorçage :

ServiceClasseObjectif
databaseXoopsDatabaseCouche d’abstraction base de données
configConfigurationManagerGestion configuration
loggerLoggerJournalisation d’application
templateXoopsTplMoteur modèles
userUserManagerService de gestion utilisateurs
moduleModuleManagerGestion des modules
cacheCacheManagerCouche de cache
hooksHookManagerCrochets d’événements système
  1. Amorçage unique - Appeler boot() une seule fois lors du démarrage de l’application
  2. Utiliser le conteneur de services - Enregistrer et récupérer les services via le noyau
  3. Gérer les crochets tôt - Enregistrer les écouteurs de crochets avant de les déclencher
  4. Journaliser les événements importants - Utiliser le service logger pour le débogage
  5. Mettre en cache la configuration - Charger la configuration une fois et réutiliser
  6. Gérer les erreurs - Toujours configurer les gestionnaires d’erreurs avant de traiter les requêtes
  • ../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