XOOPS Kernel Classes
XOOPS-kernen giver den grundlæggende ramme for bootstrapping af systemet, styring af konfigurationer, håndtering af systemhændelser og levering af kerneværktøjer. Disse klasser udgør rygraden i XOOPS-applikationen.
Systemarkitektur
Sektion kaldt “Systemarkitektur”graph TD A[XoopsKernel] -->|initializes| B[Configuration Manager] A -->|manages| C[Service Container] A -->|handles| D[System Hooks] A -->|registers| E[Core Services]
B -->|loads| F[config.php] B -->|manages| G[Module Configs]
C -->|contains| H[Database] C -->|contains| I[Logger] C -->|contains| J[Template Engine] C -->|contains| K[Module Manager]
E -->|registers| L[User Service] E -->|registers| M[Module Service] E -->|registers| N[Database Service]XoopsKernel klasse
Sektion kaldt “XoopsKernel klasse”Hovedkerneklassen, der initialiserer og administrerer XOOPS-systemet.
Klasseoversigt
Sektion kaldt “Klasseoversigt”namespace Xoops;
class XoopsKernel{ private static ?XoopsKernel $instance = null; protected ServiceContainer $services; protected ConfigurationManager $config; protected array $modules = []; protected bool $isLoaded = false;}Konstruktør
Sektion kaldt “Konstruktør”private function __construct()Privat konstruktør håndhæver singleton-mønster.
getInstance
Sektion kaldt “getInstance”Henter singleton-kerneinstansen.
public static function getInstance(): XoopsKernelReturnerer: XoopsKernel - Singleton-kerneinstansen
Eksempel:
$kernel = XoopsKernel::getInstance();Bootproces
Sektion kaldt “Bootproces”Kernen boot processen følger disse trin:
- Initialisering - Indstil fejlbehandlere, definer konstanter
- Konfiguration - Indlæs konfigurationsfiler
- Tjenesteregistrering - Registrer kerneydelser
- Moduledetektion - Scan og identificer aktive moduler
- Databaseinitialisering - Opret forbindelse til databasen
- Oprydning - Forbered dig på håndtering af anmodninger
public function boot(): voidEksempel:
$kernel = XoopsKernel::getInstance();$kernel->boot();Tjenestebeholdermetoder
Sektion kaldt “Tjenestebeholdermetoder”registerService
Sektion kaldt “registerService”Registrerer en service i servicecontaineren.
public function registerService( string $name, callable|object $definition): voidParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$name | streng | Tjeneste-id |
$definition | callable|objekt | Servicefabrik eller instans |
Eksempel:
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});getService
Sektion kaldt “getService”Henter en registreret tjeneste.
public function getService(string $name): mixedParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$name | streng | Tjeneste-id |
Returneringer: mixed - Den ønskede tjeneste
Eksempel:
$database = $kernel->getService('database');$logger = $kernel->getService('logger');hasService
Sektion kaldt “hasService”Tjek om en tjeneste er registreret.
public function hasService(string $name): boolEksempel:
if ($kernel->hasService('cache')) { $cache = $kernel->getService('cache');}Configuration Manager
Sektion kaldt “Configuration Manager”Administrerer applikationskonfiguration og modulindstillinger.
Klasseoversigt
Sektion kaldt “Klasseoversigt”namespace Xoops\Core;
class ConfigurationManager{ protected array $config = []; protected array $defaults = []; protected string $configPath;}Metoder
Sektion kaldt “Metoder”indlæs
Sektion kaldt “indlæs”Indlæser konfiguration fra fil eller array.
public function load(string|array $source): voidParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$source | streng|array | Konfigurationsfilsti eller array |
Eksempel:
$config = $kernel->getService('config');$config->load(XOOPS_ROOT_PATH . '/include/config.php');$config->load(['sitename' => 'My Site', 'admin_email' => 'admin@example.com']);Henter en konfigurationsværdi.
public function get(string $key, mixed $default = null): mixedParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$key | streng | Konfigurationsnøgle (punktnotation) |
$default | blandet | Standardværdi, hvis den ikke findes |
Returneringer: mixed - Konfigurationsværdi
Eksempel:
$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email', 'admin@example.com');indstillet
Sektion kaldt “indstillet”Indstiller en konfigurationsværdi.
public function set(string $key, mixed $value): voidParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$key | streng | Konfigurationsnøgle |
$value | blandet | Konfigurationsværdi |
Eksempel:
$config->set('sitename', 'New Site Name');$config->set('features.cache_enabled', true);getModuleConfig
Sektion kaldt “getModuleConfig”Får konfiguration til et specifikt modul.
public function getModuleConfig( string $moduleName): arrayParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$moduleName | streng | Modulkatalognavn |
Returneringer: array - Modulkonfigurationsarray
Eksempel:
$publisherConfig = $config->getModuleConfig('publisher');Systemkroge
Sektion kaldt “Systemkroge”Systemhooks tillader moduler og plugins at udføre kode på bestemte punkter i applikationens livscyklus.
HookManager klasse
Sektion kaldt “HookManager klasse”namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Metoder
Sektion kaldt “Metoder”addHook
Sektion kaldt “addHook”Registrerer et krogpunkt.
public function addHook(string $name): voidParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$name | streng | Krog identifikator |
Eksempel:
$hooks = $kernel->getService('hooks');$hooks->addHook('system.startup');$hooks->addHook('user.login');$hooks->addHook('module.install');Fastgør en lytter til en krog.
public function listen( string $hookName, callable $callback, int $priority = 10): voidParametre:
| Parameter | Skriv | Beskrivelse |
|---|---|---|
$hookName | streng | Krog identifikator |
$callback | opkaldbar | Funktion til at udføre |
$priority | int | Udførelsesprioritet (højere kørsler først) |
Eksempel:
$hooks->listen('user.login', function($user) { error_log('User ' . $user->uname . ' logged in');}, 10);
$hooks->listen('module.install', function($module) { // Custom module installation logic echo "Installing " . $module->getName();}, 5);trigger
Sektion kaldt “trigger”Henretter alle lyttere for en hook.
public function trigger( string $hookName, mixed $arguments = null): arrayParametre:| Parameter | Skriv | Beskrivelse |
|-----------|------|------------|
| $hookName | streng | Krog identifikator |
| $arguments | blandet | Data, der skal videregives til lyttere |
Returneringer: array - Resultater fra alle lyttere
Eksempel:
$results = $hooks->trigger('system.startup');$results = $hooks->trigger('user.created', $newUser);Oversigt over kernetjenester
Sektion kaldt “Oversigt over kernetjenester”Kernen registrerer flere kernetjenester under opstart:
| Service | Klasse | Formål |
|---|---|---|
database | XoopsDatabase | Databaseabstraktionslag |
config | ConfigurationManager | Konfigurationsstyring |
logger | Logger | Ansøgningslogning |
template | XoopsTpl | Skabelonmotor |
user | UserManager | Brugeradministrationstjeneste |
module | ModuleManager | Modulstyring |
cache | CacheManager | Cachinglag |
hooks | HookManager | System event hooks |
Komplet brugseksempel
Sektion kaldt “Komplet brugseksempel”<?php/** * Custom module boot process utilizing kernel */
// Get kernel instance$kernel = XoopsKernel::getInstance();
// Boot the system$kernel->boot();
// Get services$config = $kernel->getService('config');$database = $kernel->getService('database');$logger = $kernel->getService('logger');$hooks = $kernel->getService('hooks');
// Access configuration$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email');
// Register module-specific hooks$hooks->listen('user.login', function($user) { // Log user login $logger->info('User login: ' . $user->uname);
// Track in database $database->query( 'INSERT INTO ' . $database->prefix('event_log') . ' (type, user_id, message, timestamp) VALUES (?, ?, ?, ?)', ['login', $user->uid(), 'User login', time()] );});
$hooks->listen('module.install', function($module) { $logger->info('Module installed: ' . $module->getName());});
// Trigger hooks$hooks->trigger('system.startup');
// Use database service$result = $database->query( 'SELECT * FROM ' . $database->prefix('users') . ' LIMIT 10');
while ($row = $database->fetchArray($result)) { echo "User: " . htmlspecialchars($row['uname']) . "\n";}
// Register custom service$kernel->registerService('custom.repository', function($c) { return new CustomRepository($c->getService('database'));});
// Later access custom service$repo = $kernel->getService('custom.repository');Kernekonstanter
Sektion kaldt “Kernekonstanter”Kernen definerer flere vigtige konstanter under opstart:
// System pathsdefine('XOOPS_ROOT_PATH', '/var/www/xoops');define('XOOPS_HTDOCS_PATH', XOOPS_ROOT_PATH . '/htdocs');define('XOOPS_MODULES_PATH', XOOPS_ROOT_PATH . '/htdocs/modules');define('XOOPS_THEMES_PATH', XOOPS_ROOT_PATH . '/htdocs/themes');
// Web pathsdefine('XOOPS_URL', 'http://example.com');define('XOOPS_HTDOCS_URL', XOOPS_URL . '/htdocs');
// Databasedefine('XOOPS_DB_PREFIX', 'xoops_');Fejlhåndtering
Sektion kaldt “Fejlhåndtering”Kernen opsætter fejlbehandlere under opstart:
// Set custom error handlerset_error_handler(function($errno, $errstr, $errfile, $errline) { $kernel->getService('logger')->error( "Error: $errstr in $errfile:$errline" );});
// Set exception handlerset_exception_handler(function($exception) { $kernel->getService('logger')->critical( "Exception: " . $exception->getMessage() );});Bedste praksis
Sektion kaldt “Bedste praksis”- Enkeltstart - Ring kun til
boot()én gang under opstart af programmet - Brug Service Container - Registrer og hent tjenester gennem kernen
- Håndter kroge tidligt - Registrer hooklyttere, før du udløser dem
- Log vigtige begivenheder - Brug loggertjenesten til fejlretning
- Cachekonfiguration - Indlæs konfiguration én gang og genbrug
- Fejlhåndtering - Opsæt altid fejlbehandlere, før du behandler anmodninger
Relateret dokumentation
Sektion kaldt “Relateret dokumentation”- ../Module/Module-System - Modulsystem og livscyklus
- ../Template/Template-System - Integration af skabelonmotor
- ../User/User-System - Brugergodkendelse og administration
- ../Database/XoopsDatabase - Databaselag
Se også: XOOPS Kernel Source