Skip to content

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.

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]

Glavni razred jedra, ki inicializira in upravlja sistem XOOPS.

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

Zasebni konstruktor uveljavlja vzorec singleton.

Pridobi enojni primerek jedra.

public static function getInstance(): XoopsKernel

Vrne: XoopsKernel - primerek jedra z enim samcem

Primer:

$kernel = XoopsKernel::getInstance();

Postopek zagona jedra poteka po naslednjih korakih:

  1. Inicializacija - Nastavite obdelovalce napak, definirajte konstante
  2. Konfiguracija - Naloži konfiguracijske datoteke
  3. Registracija storitve - Registrirajte osnovne storitve
  4. Zaznavanje modulov - Preglejte in identificirajte aktivne module
  5. Inicializacija baze podatkov - Povežite se z bazo podatkov
  6. Čiščenje - Pripravite se na obravnavanje zahtev
public function boot(): void

Primer:

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

Registrira storitev v storitvenem vsebniku.

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

Parametri:

ParameterVrstaOpis
$namenizIdentifikator storitve
$definitionklicati|objektServisna tovarna ali primer

Primer:

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

Pridobi registrirano storitev.

public function getService(string $name): mixed

Parametri:

ParameterVrstaOpis
$namenizIdentifikator storitve

Vračila: mixed - Zahtevana storitev

Primer:

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

Preveri, ali je storitev registrirana.

public function hasService(string $name): bool

Primer:

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

Upravlja konfiguracijo aplikacije in nastavitve modula.

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

Naloži konfiguracijo iz datoteke ali polja.

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

Parametri:

ParameterVrstaOpis
$sourceniz|nizPot 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): mixed

Parametri:

ParameterVrstaOpis
$keynizKonfiguracijski ključ (zapis s pikami)
$defaultmešanoPrivzeta vrednost, če ni najden

Vrne: mixed - Vrednost konfiguracije

Primer:

$siteName = $config->get('sitename');
$adminEmail = $config->get('admin.email', 'admin@example.com');

Nastavi vrednost konfiguracije.

public function set(string $key, mixed $value): void

Parametri:

ParameterVrstaOpis
$keynizKonfiguracijski ključ
$valuemešanoVrednost konfiguracije

Primer:

$config->set('sitename', 'New Site Name');
$config->set('features.cache_enabled', true);

Pridobi konfiguracijo za določen modul.

public function getModuleConfig(
string $moduleName
): array

Parametri:

ParameterVrstaOpis
$moduleNamenizIme imenika modula

Vrne: array - Niz konfiguracije modula

Primer:

$publisherConfig = $config->getModuleConfig('publisher');

Sistemske zanke omogočajo modulom in vtičnikom, da izvajajo kodo na določenih točkah v življenjskem ciklu aplikacije.

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

Registrira kaveljsko točko.

public function addHook(string $name): void

Parametri:

ParameterVrstaOpis
$namenizIdentifikator kljuke

Primer:

$hooks = $kernel->getService('hooks');
$hooks->addHook('system.startup');
$hooks->addHook('user.login');
$hooks->addHook('module.install');

Pritrdi poslušalec na kavelj.

public function listen(
string $hookName,
callable $callback,
int $priority = 10
): void

Parametri:

ParameterVrstaOpis
$hookNamenizIdentifikator kljuke
$callbackklicatiFunkcija za izvedbo
$priorityintPrioriteta 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);

Izvede vse poslušalce za kavelj.

public function trigger(
string $hookName,
mixed $arguments = null
): array

Parametri:

ParameterVrstaOpis
$hookNamenizIdentifikator kljuke
$argumentsmešanoPodatki za posredovanje poslušalcem

Vrnitve: array - Rezultati vseh poslušalcev

Primer:

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

Jedro med zagonom registrira več osnovnih storitev:

StoritevRazredNamen
databaseXoopsDatabaseAbstraktna plast baze podatkov
configConfigurationManagerUpravljanje konfiguracije
loggerDrvarBeleženje aplikacij
templateXoopsTplMehanizem predlog
userUpravitelj uporabnikovStoritev upravljanja uporabnikov
moduleModuleManagerUpravljanje modulov
cacheCacheManagerPredpomnilniška plast
hooksHookManagerKavlji sistemskih dogodkov
<?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');

Jedro definira več pomembnih konstant med zagonom:

// System paths
define('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 paths
define('XOOPS_URL', 'http://example.com');
define('XOOPS_HTDOCS_URL', XOOPS_URL . '/htdocs');
// Database
define('XOOPS_DB_PREFIX', 'xoops_');

Jedro med zagonom nastavi obdelovalce napak:

// Set custom error handler
set_error_handler(function($errno, $errstr, $errfile, $errline) {
$kernel->getService('logger')->error(
"Error: $errstr in $errfile:$errline"
);
});
// Set exception handler
set_exception_handler(function($exception) {
$kernel->getService('logger')->critical(
"Exception: " . $exception->getMessage()
);
});
  1. Single Boot - Pokličite boot() samo enkrat med zagonom aplikacije
  2. Uporabi vsebnik storitev - Registrirajte in pridobite storitve prek jedra
  3. Handle Hooks Early - Registrirajte poslušalce hookov, preden jih sprožite
  4. Zabeležite pomembne dogodke – za odpravljanje napak uporabite storitev zapisovalnika
  5. Konfiguracija predpomnilnika - Enkrat naložite konfiguracijo in jo ponovno uporabite
  6. Obravnava napak - Pred obdelavo zahtev vedno nastavite obdelovalce napak
  • ../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