İçeriğe geç

XOOPS Core Sınıfları

XOOPS Çekirdeği, sistemi önyüklemek, yapılandırmaları yönetmek, sistem olaylarını yönetmek ve temel yardımcı programları sağlamak için temel çerçeveyi sağlar. Bu sınıflar XOOPS uygulamasının omurgasını oluşturur.

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]

XOOPS sistemini başlatan ve yöneten ana Core sınıfı.

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()

Özel kurucu singleton modelini zorlar.

Singleton Core örneğini alır.

public static function getInstance(): XoopsKernel

Döndürür: XoopsKernel - Singleton Core örneği

Örnek:

$kernel = XoopsKernel::getInstance();

Core önyükleme işlemi şu adımları takip eder:

  1. Başlatma - Hata işleyicilerini ayarlayın, sabitleri tanımlayın
  2. Yapılandırma - Yapılandırma dosyalarını yükleyin
  3. Hizmet Kaydı - Temel hizmetleri kaydedin
  4. module Algılama - Etkin modülleri tarayın ve tanımlayın
  5. database Başlatma - Veritabanına bağlanın
  6. Temizleme - İstek işlemeye hazırlık
public function boot(): void

Örnek:

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

Hizmet kapsayıcısına bir hizmeti kaydeder.

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

Parametreler:

ParametreTürAçıklama
$namedizeHizmet tanımlayıcı
$definitionçağrılabilir|nesneServis fabrikası veya örneği

Örnek:

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

Kayıtlı bir hizmeti alır.

public function getService(string $name): mixed

Parametreler:

ParametreTürAçıklama
$namedizeHizmet tanımlayıcı

Geri döndürür: mixed - İstenen hizmet

Örnek:

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

####Hizmet var

Bir hizmetin kayıtlı olup olmadığını kontrol eder.

public function hasService(string $name): bool

Örnek:

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

Uygulama yapılandırmasını ve module ayarlarını yönetir.

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

Yapılandırmayı dosyadan veya diziden yükler.

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

Parametreler:

ParametreTürAçıklama
$sourcedize|diziYapılandırma dosyası yolu veya dizisi

Örnek:

$config = $kernel->getService('config');
$config->load(XOOPS_ROOT_PATH . '/include/config.php');
$config->load(['sitename' => 'My Site', 'admin_email' => 'admin@example.com']);

Bir yapılandırma değeri alır.

public function get(string $key, mixed $default = null): mixed

Parametreler:

ParametreTürAçıklama
$keydizeYapılandırma anahtarı (nokta gösterimi)
$defaultkarışıkBulunmazsa varsayılan değer

Döndürür: mixed - Yapılandırma değeri

Örnek:

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

Bir konfigürasyon değeri ayarlar.

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

Parametreler:

ParametreTürAçıklama
$keydizeYapılandırma anahtarı
$valuekarışıkYapılandırma değeri

Örnek:

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

Belirli bir module için yapılandırmayı alır.

public function getModuleConfig(
string $moduleName
): array

Parametreler:

ParametreTürAçıklama
$moduleNamedizemodule dizini adı

Döndürür: array - module yapılandırma dizisi

Örnek:

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

Sistem kancaları, modüllerin ve eklentilerin uygulama yaşam döngüsünün belirli noktalarında kod yürütmesine olanak tanır.

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

Bir kanca noktası kaydeder.

public function addHook(string $name): void

Parametreler:

ParametreTürAçıklama
$namedizeKanca tanımlayıcı

Örnek:

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

Bir dinleyiciyi kancaya bağlar.

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

Parametreler:

ParametreTürAçıklama
$hookNamedizeKanca tanımlayıcı
$callbackçağrılabilirYürütülecek işlev
$priorityintYürütme önceliği (önce yüksek çalıştırmalar)

Örnek:

$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);

Bir kanca için tüm dinleyicileri çalıştırır.

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

Parametreler:

ParametreTürAçıklama
$hookNamedizeKanca tanımlayıcı
$argumentskarışıkDinleyicilere aktarılacak veriler

Geri döndürür: array - Tüm dinleyicilerden gelen sonuçlar

Örnek:

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

Core, önyükleme sırasında birkaç temel hizmeti kaydeder:

HizmetSınıfAmaç
databaseXoopsDatabasedatabase soyutlama katmanı
configYapılandırma YöneticisiKonfigürasyon yönetimi
loggerKaydediciUygulama günlüğü
templateXoopsTpltemplate motoru
useruser Yöneticisiuser yönetimi hizmeti
modulemodule Yöneticisimodule yönetimi
cachecache YöneticisiÖnbelleğe alma katmanı
hooksKanca YöneticisiSistem olay kancaları
<?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');

Core, önyükleme sırasında birkaç önemli sabiti tanımlar:

// 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_');

Core, önyükleme sırasında hata işleyicilerini ayarlar:

// 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. Tek Önyükleme - Uygulama başlatılırken boot()’yi yalnızca bir kez arayın
  2. Hizmet Kapsayıcısını Kullanın - Hizmetleri Core aracılığıyla kaydedin ve alın
  3. Kancaları Erken Ele Alın - Kanca dinleyicilerini tetiklemeden önce kaydedin
  4. Önemli Olayları Günlüğe Kaydet - Hata ayıklama için günlükçü hizmetini kullanın
  5. cache Yapılandırması - Yapılandırmayı bir kez yükleyin ve yeniden kullanın
  6. Hata İşleme - İstekleri işleme koymadan önce daima hata işleyicileri ayarlayın
  • ../Module/Module-System - module sistemi ve yaşam döngüsü
  • ../Template/Template-System - template motoru entegrasyonu
  • ../User/User-System - user kimlik doğrulaması ve yönetimi
  • ../Database/XoopsDatabase - database katmanı

Ayrıca bakınız: XOOPS Core Kaynağı