XOOPS Razredi jedra
Jedro XOOPS zagotavlja temeljni okvir za zagon sistema, upravljanje konfiguracij, obravnavanje sistemskih dogodkov in zagotavljanje osnovnih pripomočkov. Ti razredi tvorijo hrbtenico aplikacije XOOPS.
Sistemska arhitektura
Section titled “Sistemska arhitektura”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]Razred XoopsKernel
Section titled “Razred XoopsKernel”Glavni razred jedra, ki inicializira in upravlja sistem 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()Zasebni konstruktor uveljavlja vzorec singleton.
getInstance
Section titled “getInstance”Pridobi enojni primerek jedra.
public static function getInstance(): XoopsKernelVrne: XoopsKernel - primerek jedra z enim samcem
Primer:
$kernel = XoopsKernel::getInstance();Postopek zagona
Section titled “Postopek zagona”Postopek zagona jedra poteka po naslednjih korakih:
- Inicializacija - Nastavite obdelovalce napak, definirajte konstante
- Konfiguracija - Naloži konfiguracijske datoteke
- Registracija storitve - Registrirajte osnovne storitve
- Zaznavanje modulov - Preglejte in identificirajte aktivne module
- Inicializacija baze podatkov - Povežite se z bazo podatkov
- Čiščenje - Pripravite se na obravnavanje zahtev
public function boot(): voidPrimer:
$kernel = XoopsKernel::getInstance();$kernel->boot();Metode storitvenega vsebnika
Section titled “Metode storitvenega vsebnika”registerService
Section titled “registerService”Registrira storitev v storitvenem vsebniku.
public function registerService( string $name, callable|object $definition): voidParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$name | niz | Identifikator storitve |
$definition | klicati|objekt | Servisna tovarna ali primer |
Primer:
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});getService
Section titled “getService”Pridobi registrirano storitev.
public function getService(string $name): mixedParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$name | niz | Identifikator storitve |
Vračila: mixed - Zahtevana storitev
Primer:
$database = $kernel->getService('database');$logger = $kernel->getService('logger');hasService
Section titled “hasService”Preveri, ali je storitev registrirana.
public function hasService(string $name): boolPrimer:
if ($kernel->hasService('cache')) { $cache = $kernel->getService('cache');}Upravitelj konfiguracije
Section titled “Upravitelj konfiguracije”Upravlja konfiguracijo aplikacije in nastavitve 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”obremenitev
Section titled “obremenitev”Naloži konfiguracijo iz datoteke ali polja.
public function load(string|array $source): voidParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$source | niz|niz | Pot konfiguracijske datoteke ali polje |
Primer:
$config = $kernel->getService('config');$config->load(XOOPS_ROOT_PATH . '/include/config.php');$config->load(['sitename' => 'My Site', 'admin_email' => 'admin@example.com']);Pridobi konfiguracijsko vrednost.
public function get(string $key, mixed $default = null): mixedParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$key | niz | Konfiguracijski ključ (zapis s pikami) |
$default | mešano | Privzeta vrednost, če ni najden |
Vrne: mixed - Vrednost konfiguracije
Primer:
$siteName = $config->get('sitename');$adminEmail = $config->get('admin.email', 'admin@example.com');komplet
Section titled “komplet”Nastavi vrednost konfiguracije.
public function set(string $key, mixed $value): voidParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$key | niz | Konfiguracijski ključ |
$value | mešano | Vrednost konfiguracije |
Primer:
$config->set('sitename', 'New Site Name');$config->set('features.cache_enabled', true);getModuleConfig
Section titled “getModuleConfig”Pridobi konfiguracijo za določen modul.
public function getModuleConfig( string $moduleName): arrayParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$moduleName | niz | Ime imenika modula |
Vrne: array - Niz konfiguracije modula
Primer:
$publisherConfig = $config->getModuleConfig('publisher');Sistemske kljuke
Section titled “Sistemske kljuke”Sistemske zanke omogočajo modulom in vtičnikom, da izvajajo kodo na določenih točkah v življenjskem ciklu aplikacije.
Razred HookManager
Section titled “Razred HookManager”namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Metode
Section titled “Metode”addHook
Section titled “addHook”Registrira kaveljsko točko.
public function addHook(string $name): voidParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$name | niz | Identifikator kljuke |
Primer:
$hooks = $kernel->getService('hooks');$hooks->addHook('system.startup');$hooks->addHook('user.login');$hooks->addHook('module.install');poslušaj
Section titled “poslušaj”Pritrdi poslušalec na kavelj.
public function listen( string $hookName, callable $callback, int $priority = 10): voidParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$hookName | niz | Identifikator kljuke |
$callback | klicati | Funkcija za izvedbo |
$priority | int | Prioriteta izvajanja (najprej se zaženejo višji) |
Primer:
$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);sprožilec
Section titled “sprožilec”Izvede vse poslušalce za kavelj.
public function trigger( string $hookName, mixed $arguments = null): arrayParametri:
| Parameter | Vrsta | Opis |
|---|---|---|
$hookName | niz | Identifikator kljuke |
$arguments | mešano | Podatki za posredovanje poslušalcem |
Vrnitve: array - Rezultati vseh poslušalcev
Primer:
$results = $hooks->trigger('system.startup');$results = $hooks->trigger('user.created', $newUser);Pregled osnovnih storitev
Section titled “Pregled osnovnih storitev”Jedro med zagonom registrira več osnovnih storitev:
| Storitev | Razred | Namen |
|---|---|---|
database | XoopsDatabase | Abstraktna plast baze podatkov |
config | ConfigurationManager | Upravljanje konfiguracije |
logger | Drvar | Beleženje aplikacij |
template | XoopsTpl | Mehanizem predlog |
user | Upravitelj uporabnikov | Storitev upravljanja uporabnikov |
module | ModuleManager | Upravljanje modulov |
cache | CacheManager | Predpomnilniška plast |
hooks | HookManager | Kavlji sistemskih dogodkov |
Celoten primer uporabe
Section titled “Celoten primer uporabe”<?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');Jedrne konstante
Section titled “Jedrne konstante”Jedro definira več pomembnih konstant med zagonom:
// 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_');Obravnava napak
Section titled “Obravnava napak”Jedro med zagonom nastavi obdelovalce napak:
// 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() );});Najboljše prakse
Section titled “Najboljše prakse”- Single Boot - Pokličite
boot()samo enkrat med zagonom aplikacije - Uporabi vsebnik storitev - Registrirajte in pridobite storitve prek jedra
- Handle Hooks Early - Registrirajte poslušalce hookov, preden jih sprožite
- Zabeležite pomembne dogodke – za odpravljanje napak uporabite storitev zapisovalnika
- Konfiguracija predpomnilnika - Enkrat naložite konfiguracijo in jo ponovno uporabite
- Obravnava napak - Pred obdelavo zahtev vedno nastavite obdelovalce napak
Povezana dokumentacija
Section titled “Povezana dokumentacija”- ../Module/Module-System - Sistem modula in življenjski cikel
- ../Template/Template-System - Integracija mehanizma predloge
- ../User/User-System - Preverjanje in upravljanje uporabnikov
- ../Database/XoopsDatabase - Plast baze podatkov
Glejte tudi: XOOPS Izvor jedra