XOOPS kernel osztályok
A XOOPS Kernel biztosítja az alapvető keretrendszert a rendszer indításához, a konfigurációk kezeléséhez, a rendszeresemények kezeléséhez és az alapvető segédprogramok biztosításához. Ezek az osztályok alkotják a XOOPS alkalmazás gerincét.
Rendszerarchitektúra
Szekció neve “Rendszerarchitektúra”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 osztály
Szekció neve “XOOPSKernel osztály”A fő kernelosztály, amely inicializálja és kezeli a XOOPS rendszert.
Osztály áttekintése
Szekció neve “Osztály áttekintése”namespace Xoops;
class XoopsKernel{ private static ?XoopsKernel $instance = null; protected ServiceContainer $services; protected ConfigurationManager $config; protected array $modules = []; protected bool $isLoaded = false;}Konstruktor
Szekció neve “Konstruktor”private function __construct()A privát kivitelező egyszemélyes mintát kényszerít ki.
getInstance
Szekció neve “getInstance”Lekéri a singleton kernel példányt.
public static function getInstance(): XoopsKernelVissza: XOOPSKernel – Az egyszemélyes kernelpéldány
Példa:
$kernel = XoopsKernel::getInstance();Indítási folyamat
Szekció neve “Indítási folyamat”A kernel rendszerindítási folyamata a következő lépéseket követi:
- Inicializálás - Hibakezelők beállítása, állandók meghatározása
- Konfiguráció - Konfigurációs fájlok betöltése
- Szolgáltatás regisztráció - Az alapvető szolgáltatások regisztrálása
- modulfelismerés - Az aktív modulok vizsgálata és azonosítása
- Adatbázis inicializálása - Csatlakozás az adatbázishoz
- Takarítás - Készüljön fel a kérések kezelésére
public function boot(): voidPélda:
$kernel = XoopsKernel::getInstance();$kernel->boot();Service Container Methods
Szekció neve “Service Container Methods”regisztrációSzolgáltatás
Szekció neve “regisztrációSzolgáltatás”Regisztrál egy szolgáltatást a szolgáltatástárolóban.
public function registerService( string $name, callable|object $definition): voidParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$name | húr | Szolgáltatásazonosító |
$definition | hívható|tárgy | Szervizgyár vagy példány |
Példa:
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});getService
Szekció neve “getService”Lekér egy regisztrált szolgáltatást.
public function getService(string $name): mixedParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$name | húr | Szolgáltatásazonosító |
Visszaküldés: mixed – A kért szolgáltatás
Példa:
$database = $kernel->getService('database');$logger = $kernel->getService('logger');hasService
Szekció neve “hasService”Ellenőrzi, hogy egy szolgáltatás regisztrálva van-e.
public function hasService(string $name): boolPélda:
if ($kernel->hasService('cache')) { $cache = $kernel->getService('cache');}Konfigurációkezelő
Szekció neve “Konfigurációkezelő”Kezeli az alkalmazáskonfigurációt és a modulbeállításokat.
Osztály áttekintése
Szekció neve “Osztály áttekintése”namespace Xoops\Core;
class ConfigurationManager{ protected array $config = []; protected array $defaults = []; protected string $configPath;}Módszerek
Szekció neve “Módszerek”betöltése
Szekció neve “betöltése”A konfigurációt betölti fájlból vagy tömbből.
public function load(string|array $source): voidParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$source | string|tömb | Konfigurációs fájl elérési útja vagy tömbje |
Példa:
$config = $kernel->getService('config');$config->load(XOOPS_ROOT_PATH . '/include/config.php');$config->load(['sitename' => 'My Site', 'admin_email' => 'admin@example.com']);Lekér egy konfigurációs értéket.
public function get(string $key, mixed $default = null): mixedParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$key | húr | Konfigurációs kulcs (pont jelölés) |
$default | vegyes | Alapértelmezett érték, ha nem található |
Visszaküldés: mixed - Konfigurációs érték
Példa:
$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email', 'admin@example.com');készlet
Szekció neve “készlet”Beállít egy konfigurációs értéket.
public function set(string $key, mixed $value): voidParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$key | húr | Konfigurációs kulcs |
$value | vegyes | Konfigurációs érték |
Példa:
$config->set('sitename', 'New Site Name');$config->set('features.cache_enabled', true);getmoduleConfig
Szekció neve “getmoduleConfig”Konfigurációt kér egy adott modulhoz.
public function getModuleConfig( string $moduleName): arrayParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$moduleName | húr | modul könyvtár neve |
Vissza: array - modul konfigurációs tömb
Példa:
$publisherConfig = $config->getModuleConfig('publisher');Rendszerhookok
Szekció neve “Rendszerhookok”A rendszerhookok lehetővé teszik a modulok és beépülő modulok számára, hogy kódot hajtsanak végre az alkalmazás életciklusának meghatározott pontjain.
HookManager osztály
Szekció neve “HookManager osztály”namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Módszerek
Szekció neve “Módszerek”addHook
Szekció neve “addHook”Regisztrál egy hook pontot.
public function addHook(string $name): voidParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$name | húr | Horogazonosító |
Példa:
$hooks = $kernel->getService('hooks');$hooks->addHook('system.startup');$hooks->addHook('user.login');$hooks->addHook('module.install');figyelj
Szekció neve “figyelj”A hallgatót egy hookhoz rögzíti.
public function listen( string $hookName, callable $callback, int $priority = 10): voidParaméterek:
| Paraméter | Típus | Leírás |
|---|---|---|
$hookName | húr | Horogazonosító |
$callback | hívható | A végrehajtandó függvény |
$priority | int | Végrehajtási prioritás (magasabb futtatások először) |
Példa:
$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
Szekció neve “trigger”Kivégzi az összes hallgatót egy hookért.
public function trigger( string $hookName, mixed $arguments = null): arrayParaméterek:| Paraméter | Típus | Leírás |
|-----------|------|--------------|
| $hookName | húr | Horogazonosító |
| $arguments | vegyes | A hallgatóknak továbbítandó adatok |
Visszaküldés: array - Eredmények az összes hallgatótól
Példa:
$results = $hooks->trigger('system.startup');$results = $hooks->trigger('user.created', $newUser);Az alapszolgáltatások áttekintése
Szekció neve “Az alapszolgáltatások áttekintése”A rendszermag számos alapvető szolgáltatást regisztrál a rendszerindítás során:
| Szolgáltatás | osztály | Cél |
|---|---|---|
database | XOOPSDatabase | Adatbázis-absztrakciós réteg |
config | ConfigurationManager | Konfigurációkezelés |
logger | Logger | Alkalmazásnaplózás |
template | XOOPSTpl | Sablon motor |
user | UserManager | Felhasználókezelési szolgáltatás |
module | moduleManager | modulkezelés |
cache | CacheManager | Gyorsítótárazási réteg |
hooks | HookManager | Rendszeresemény-hookok |
Teljes használati példa
Szekció neve “Teljes használati példa”<?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');Alapkonstansok
Szekció neve “Alapkonstansok”A rendszermag számos fontos állandót határoz meg a rendszerindítás során:
// 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_');Hibakezelés
Szekció neve “Hibakezelés”A kernel hibakezelőket állít be a rendszerindítás során:
// 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() );});Bevált gyakorlatok
Szekció neve “Bevált gyakorlatok”- Egyszeri rendszerindítás – A
boot()-t csak egyszer hívja az alkalmazás indításakor - A Service Container használata – Regisztráljon és kérjen le szolgáltatásokat a kernelen keresztül
- Kezelje korai hookokat - Regisztrálja a hookhallgatókat, mielőtt elindítaná őket
- Fontos események naplózása – Hibakereséshez használja a naplózó szolgáltatást
- Gyorsítótár konfigurációja - Töltsd be egyszer a konfigurációt, és használd újra
- Hibakezelés - Mindig állítson be hibakezelőket a kérések feldolgozása előtt
Kapcsolódó dokumentáció
Szekció neve “Kapcsolódó dokumentáció”- ../module/module-System - modulrendszer és életciklus
- ../Template/Template-System - Sablonmotor integráció
- ../User/User-System - Felhasználó hitelesítés és kezelése
- ../Database/XOOPSDatabase - Adatbázis réteg
Lásd még: XOOPS Kernelforrás