XOOPS Klase kernela
Kernel XOOPS pruža temeljni okvir za pokretanje sustava, upravljanje konfiguracijama, rukovanje sistemskim događajima i pružanje osnovnih uslužnih programa. Ovi classes čine okosnicu aplikacije XOOPS.
Arhitektura sustava
Section titled “Arhitektura sustava”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 klasa
Section titled “XoopsKernel klasa”Glavni kernel class koji inicijalizira i upravlja sustavom XOOPS.
Pregled razreda
Section titled “Pregled razreda”namespace Xoops;
class XoopsKernel{ private static ?XoopsKernel $instance = null; protected ServiceContainer $services; protected ConfigurationManager $config; protected array $modules = []; protected bool $isLoaded = false;}Konstruktor
Section titled “Konstruktor”private function __construct()Privatni konstruktor nameće pojedinačni uzorak.
getInstance
Section titled “getInstance”Dohvaća singleton instancu kernel.
public static function getInstance(): XoopsKernelPovratak: XoopsKernel - pojedinačni primjerak kernel
Primjer:
$kernel = XoopsKernel::getInstance();Proces pokretanja
Section titled “Proces pokretanja”Proces pokretanja kernel slijedi ove korake:
- Inicijalizacija - Postavite rukovatelje greškama, definirajte konstante
- Konfiguracija - Učitajte konfiguracijske datoteke
- Registracija usluge - Registrirajte osnovne usluge
- Detekcija modula - Skenirajte i identificirajte aktivni modules
- Inicijalizacija baze podataka - Povežite se s bazom podataka
- Čišćenje - Pripremite se za obradu zahtjeva
public function boot(): voidPrimjer:
$kernel = XoopsKernel::getInstance();$kernel->boot();Metode spremnika usluge
Section titled “Metode spremnika usluge”registerService
Section titled “registerService”Registrira uslugu u spremniku usluge.
public function registerService( string $name, callable|object $definition): voidParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$name | niz | Identifikator usluge |
$definition | pozivni|objekt | Servisna tvornica ili instanca |
Primjer:
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});getService
Section titled “getService”Dohvaća registriranu uslugu.
public function getService(string $name): mixedParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$name | niz | Identifikator usluge |
Povrat: mixed - Tražena usluga
Primjer:
$database = $kernel->getService('database');$logger = $kernel->getService('logger');hasService
Section titled “hasService”Provjerava je li usluga registrirana.
public function hasService(string $name): boolPrimjer:
if ($kernel->hasService('cache')) { $cache = $kernel->getService('cache');}Upravitelj konfiguracije
Section titled “Upravitelj konfiguracije”Upravlja konfiguracijom aplikacije i postavkama modula.
Pregled razreda
Section titled “Pregled razreda”namespace Xoops\Core;
class ConfigurationManager{ protected array $config = []; protected array $defaults = []; protected string $configPath;}Metode
Section titled “Metode”opterećenje
Section titled “opterećenje”Učitava konfiguraciju iz datoteke ili polja.
public function load(string|array $source): voidParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$source | niz|niz | Staza konfiguracijske datoteke ili polje |
Primjer:
$config = $kernel->getService('config');$config->load(XOOPS_ROOT_PATH . '/include/config.php');$config->load(['sitename' => 'My Site', 'admin_email' => 'admin@example.com']);dobiti
Section titled “dobiti”Dohvaća vrijednost konfiguracije.
public function get(string $key, mixed $default = null): mixedParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$key | niz | Konfiguracijski ključ (zapis s točkama) |
$default | mješoviti | Zadana vrijednost ako nije pronađena |
Povratak: mixed - vrijednost konfiguracije
Primjer:
$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email', 'admin@example.com');Postavlja vrijednost konfiguracije.
public function set(string $key, mixed $value): voidParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$key | niz | Konfiguracijski ključ |
$value | mješoviti | Vrijednost konfiguracije |
Primjer:
$config->set('sitename', 'New Site Name');$config->set('features.cache_enabled', true);getModuleConfig
Section titled “getModuleConfig”Dobiva konfiguraciju za određeni modul.
public function getModuleConfig( string $moduleName): arrayParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$moduleName | niz | Naziv direktorija modula |
Povrat: array - Niz konfiguracije modulaPrimjer:
$publisherConfig = $config->getModuleConfig('publisher');Kuke sustava
Section titled “Kuke sustava”Sistemske kuke omogućuju modules i dodacima da izvrše kod u određenim točkama u životnom ciklusu aplikacije.
HookManager klasa
Section titled “HookManager klasa”namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Metode
Section titled “Metode”addHook
Section titled “addHook”Registrira točku kuke.
public function addHook(string $name): voidParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$name | niz | Identifikator kuke |
Primjer:
$hooks = $kernel->getService('hooks');$hooks->addHook('system.startup');$hooks->addHook('user.login');$hooks->addHook('module.install');slušaj
Section titled “slušaj”Pričvršćuje slušalicu na udicu.
public function listen( string $hookName, callable $callback, int $priority = 10): voidParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$hookName | niz | Identifikator kuke |
$callback | pozivati | Funkcija za izvršavanje |
$priority | int | Prioritet izvršenja (prvo se pokreću viši) |
Primjer:
$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);okidač
Section titled “okidač”Izvršava sve slušatelje za kuku.
public function trigger( string $hookName, mixed $arguments = null): arrayParametri:
| Parametar | Upišite | Opis |
|---|---|---|
$hookName | niz | Identifikator kuke |
$arguments | mješoviti | Podaci za prosljeđivanje slušateljima |
Povratak: array - Rezultati svih slušatelja
Primjer:
$results = $hooks->trigger('system.startup');$results = $hooks->trigger('user.created', $newUser);Pregled osnovnih usluga
Section titled “Pregled osnovnih usluga”kernel registrira nekoliko osnovnih usluga tijekom pokretanja:
| Usluga | Razred | Svrha |
|---|---|---|
database | XoopsBaza podataka | Sloj apstrakcije baze podataka |
config | Upravitelj konfiguracije | Upravljanje konfiguracijom |
logger | Sjekač | Zapisivanje aplikacije |
template | XoopsTpl | Motor predložaka |
user | Upravitelj korisnika | Usluga upravljanja korisnicima |
module | Upravitelj modula | Upravljanje modulom |
cache | CacheManager | Sloj predmemoriranja |
hooks | HookManager | Priključnice za događaje sustava |
Kompletan primjer upotrebe
Section titled “Kompletan primjer upotrebe”<?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');Jezgrene konstante
Section titled “Jezgrene konstante”kernel definira nekoliko važnih konstanti tijekom pokretanja sustava:
// 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_');Rješavanje grešaka
Section titled “Rješavanje grešaka”kernel postavlja rukovatelje greškama tijekom pokretanja:
// 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() );});Najbolji primjeri iz prakse
Section titled “Najbolji primjeri iz prakse”- Jedno pokretanje - Pozovite
boot()samo jednom tijekom pokretanja aplikacije - Koristite spremnik usluga - Registrirajte i dohvatite usluge putem kernel
- Handle Hooks Early - Registrirajte slušatelje hooka prije nego ih pokrenete
- Zapis važnih događaja - Koristite uslugu zapisivača za otklanjanje pogrešaka
- Konfiguracija predmemorije - Učitajte konfiguraciju jednom i ponovno upotrijebite
- Rješavanje grešaka - Uvijek postavite rukovatelje greškama prije obrade zahtjeva
Povezana dokumentacija
Section titled “Povezana dokumentacija”- ../Module/Module-System - Sustav modula i životni ciklus
- ../Template/Template-System - Integracija mehanizma za predloške
- ../User/User-System - Autentikacija i upravljanje korisnicima
- ../Database/XoopsDatabase - Sloj baze podataka
Pogledajte također: XOOPS izvor kernela