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.
Sistem Mimarisi
Section titled “Sistem Mimarisi”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 Sınıfı
Section titled “XoopsKernel Sınıfı”XOOPS sistemini başlatan ve yöneten ana Core sınıfı.
Sınıfa Genel Bakış
Section titled “Sınıfa Genel Bakış”namespace Xoops;
class XoopsKernel{ private static ?XoopsKernel $instance = null; protected ServiceContainer $services; protected ConfigurationManager $config; protected array $modules = []; protected bool $isLoaded = false;}Yapıcı
Section titled “Yapıcı”private function __construct()Özel kurucu singleton modelini zorlar.
örnek al
Section titled “örnek al”Singleton Core örneğini alır.
public static function getInstance(): XoopsKernelDöndürür: XoopsKernel - Singleton Core örneği
Örnek:
$kernel = XoopsKernel::getInstance();Önyükleme İşlemi
Section titled “Önyükleme İşlemi”Core önyükleme işlemi şu adımları takip eder:
- Başlatma - Hata işleyicilerini ayarlayın, sabitleri tanımlayın
- Yapılandırma - Yapılandırma dosyalarını yükleyin
- Hizmet Kaydı - Temel hizmetleri kaydedin
- module Algılama - Etkin modülleri tarayın ve tanımlayın
- database Başlatma - Veritabanına bağlanın
- Temizleme - İstek işlemeye hazırlık
public function boot(): voidÖrnek:
$kernel = XoopsKernel::getInstance();$kernel->boot();Hizmet Kabı Yöntemleri
Section titled “Hizmet Kabı Yöntemleri”kayıt Hizmeti
Section titled “kayıt Hizmeti”Hizmet kapsayıcısına bir hizmeti kaydeder.
public function registerService( string $name, callable|object $definition): voidParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$name | dize | Hizmet tanımlayıcı |
$definition | çağrılabilir|nesne | Servis fabrikası veya örneği |
Örnek:
$kernel->registerService('custom.handler', function($c) { return new CustomHandler();});Hizmet Al
Section titled “Hizmet Al”Kayıtlı bir hizmeti alır.
public function getService(string $name): mixedParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$name | dize | Hizmet 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');}Yapılandırma Yöneticisi
Section titled “Yapılandırma Yöneticisi”Uygulama yapılandırmasını ve module ayarlarını yönetir.
Sınıfa Genel Bakış
Section titled “Sınıfa Genel Bakış”namespace Xoops\Core;
class ConfigurationManager{ protected array $config = []; protected array $defaults = []; protected string $configPath;}Yöntemler
Section titled “Yöntemler”Yapılandırmayı dosyadan veya diziden yükler.
public function load(string|array $source): voidParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$source | dize|dizi | Yapı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): mixedParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$key | dize | Yapılandırma anahtarı (nokta gösterimi) |
$default | karışık | Bulunmazsa 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');ayarla
Section titled “ayarla”Bir konfigürasyon değeri ayarlar.
public function set(string $key, mixed $value): voidParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$key | dize | Yapılandırma anahtarı |
$value | karışık | Yapılandırma değeri |
Örnek:
$config->set('sitename', 'New Site Name');$config->set('features.cache_enabled', true);getModuleConfig
Section titled “getModuleConfig”Belirli bir module için yapılandırmayı alır.
public function getModuleConfig( string $moduleName): arrayParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$moduleName | dize | module dizini adı |
Döndürür: array - module yapılandırma dizisi
Örnek:
$publisherConfig = $config->getModuleConfig('publisher');Sistem Kancaları
Section titled “Sistem Kancaları”Sistem kancaları, modüllerin ve eklentilerin uygulama yaşam döngüsünün belirli noktalarında kod yürütmesine olanak tanır.
HookManager Sınıfı
Section titled “HookManager Sınıfı”namespace Xoops\Core;
class HookManager{ protected array $hooks = []; protected array $listeners = [];}Yöntemler
Section titled “Yöntemler”addHook
Section titled “addHook”Bir kanca noktası kaydeder.
public function addHook(string $name): voidParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$name | dize | Kanca 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): voidParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$hookName | dize | Kanca tanımlayıcı |
$callback | çağrılabilir | Yürütülecek işlev |
$priority | int | Yü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);tetikleyici
Section titled “tetikleyici”Bir kanca için tüm dinleyicileri çalıştırır.
public function trigger( string $hookName, mixed $arguments = null): arrayParametreler:
| Parametre | Tür | Açıklama |
|---|---|---|
$hookName | dize | Kanca tanımlayıcı |
$arguments | karışık | Dinleyicilere 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);Temel Hizmetlere Genel Bakış
Section titled “Temel Hizmetlere Genel Bakış”Core, önyükleme sırasında birkaç temel hizmeti kaydeder:
| Hizmet | Sınıf | Amaç |
|---|---|---|
database | XoopsDatabase | database soyutlama katmanı |
config | Yapılandırma Yöneticisi | Konfigürasyon yönetimi |
logger | Kaydedici | Uygulama günlüğü |
template | XoopsTpl | template motoru |
user | user Yöneticisi | user yönetimi hizmeti |
module | module Yöneticisi | module yönetimi |
cache | cache Yöneticisi | Önbelleğe alma katmanı |
hooks | Kanca Yöneticisi | Sistem olay kancaları |
Tam Kullanım Örneği
Section titled “Tam Kullanım Örneği”<?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');Temel Sabitler
Section titled “Temel Sabitler”Core, önyükleme sırasında birkaç önemli sabiti tanımlar:
// 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_');Hata İşleme
Section titled “Hata İşleme”Core, önyükleme sırasında hata işleyicilerini ayarlar:
// 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() );});En İyi Uygulamalar
Section titled “En İyi Uygulamalar”- Tek Önyükleme - Uygulama başlatılırken
boot()’yi yalnızca bir kez arayın - Hizmet Kapsayıcısını Kullanın - Hizmetleri Core aracılığıyla kaydedin ve alın
- Kancaları Erken Ele Alın - Kanca dinleyicilerini tetiklemeden önce kaydedin
- Önemli Olayları Günlüğe Kaydet - Hata ayıklama için günlükçü hizmetini kullanın
- cache Yapılandırması - Yapılandırmayı bir kez yükleyin ve yeniden kullanın
- Hata İşleme - İstekleri işleme koymadan önce daima hata işleyicileri ayarlayın
İlgili Belgeler
Section titled “İlgili Belgeler”- ../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ğı