rex: Zentrale Klasse für System-Properties, Umgebung, Config

Verwende rex für System-Konfiguration, Umgebungsprüfung (Backend/Frontend), User-Zugriff und globale Properties.

Umgebung prüfen

Methode Rückgabe Verwendung
rex::isBackend() bool Prüft ob Backend
rex::isFrontend() bool Prüft ob Frontend
rex::getEnvironment() 'backend'|'frontend'|'console' Aktuelle Umgebung
rex::isDebugMode() bool Debug-Modus aktiv?
rex::isSafeMode() bool Safe-Mode aktiv?
rex::isLiveMode() bool Live-Modus aktiv?

Config (Datenbank, persistent)

Methode Zweck
rex::setConfig($key, $value) Config in DB speichern
rex::getConfig($key, $default) Config aus DB auslesen
rex::hasConfig($key) Config-Key existiert?
rex::removeConfig($key) Config-Key löschen

Properties (Runtime, nicht persistent)

Methode Zweck
rex::setProperty($key, $value) Runtime-Property setzen
rex::getProperty($key, $default) Runtime-Property auslesen
rex::hasProperty($key) Property-Key existiert?
rex::removeProperty($key) Property-Key löschen

Wichtige Properties

Property Typ Bedeutung
server string Server-URL (mit Trailing Slash)
servername string Server-Name
version string REDAXO-Version
lang string Backend-Sprache
table_prefix string DB-Tabellen-Präfix (meist rex_)
temp_prefix string Temp-Tabellen-Präfix
instname string Installations-Name
timezone string PHP-Timezone
user rex_user|null Aktueller Backend-User
login rex_backend_login|null Login-Instanz
debug array Debug-Einstellungen

User & Login

Methode Rückgabe Verwendung
rex::getUser() rex_user|null Aktueller User (kann null sein)
rex::requireUser() rex_user User (wirft Exception wenn nicht vorhanden)
rex::getImpersonator() rex_user|null User der impersoniert

Datenbank-Tabellen

Methode Verwendung
rex::getTablePrefix() Tabellen-Präfix (z.B. rex_)
rex::getTable('mytable') Vollständiger Tabellenname (z.B. rex_mytable)

Praxisbeispiele

Backend vs. Frontend unterscheiden

if (rex::isBackend()) {
    // Nur im Backend
    $user = rex::getUser();
} else {
    // Nur im Frontend
    rex_login::startSession();
}

Debug-Mode prüfen

if (rex::isDebugMode()) {
    dump($data);
    rex_logger::logError(E_USER_NOTICE, 'Debug info', __FILE__, __LINE__);
}

Config speichern und auslesen

// In install.php oder boot.php
rex::setConfig('my_api_key', 'abc123');
rex::setConfig('max_items', 50);

// Später irgendwo im Code
$apiKey = rex::getConfig('my_api_key');
$maxItems = rex::getConfig('max_items', 10); // Default: 10

Property setzen (nur für aktuelle Runtime)

// Property für aktuellen Request setzen
rex::setProperty('custom_data', ['foo' => 'bar']);

// Später wieder abrufen
$data = rex::getProperty('custom_data', []);

Tabellennamen mit Präfix

$tableName = rex::getTable('my_addon_data');
// Ergebnis: 'rex_my_addon_data'

$sql = rex_sql::factory();
$sql->setQuery('SELECT * FROM ' . $tableName);

Aktuellen User prüfen und verwenden

if (rex::isBackend() && $user = rex::getUser()) {
    $userId = $user->getId();
    $username = $user->getValue('login');
    $email = $user->getValue('email');

    if ($user->isAdmin()) {
        // Nur für Admins
    }

    if ($user->hasPerm('addon[my_addon]')) {
        // User hat Berechtigung für AddOn
    }
}

Safe-Mode für Addon-Entwicklung

// AddOns werden im Safe-Mode nicht geladen
if (rex::isSafeMode()) {
    echo 'Läuft im Safe-Mode - AddOns deaktiviert';
    return;
}

Server-URL verwenden

$serverUrl = rex::getProperty('server');
// z.B. 'https://example.com/'

$fullUrl = $serverUrl . 'media/image.jpg';
// Ergebnis: 'https://example.com/media/image.jpg'

Version prüfen für Kompatibilität

$version = rex::getProperty('version');

if (version_compare($version, '5.17.0', '>=')) {
    // Code nur für REDAXO 5.17+
    $sort = rex_get('sort', ['name', 'date'], 'name');
}

Timezone setzen

// In boot.php
$timezone = rex::getProperty('timezone', 'Europe/Berlin');
date_default_timezone_set($timezone);

Environment-spezifische Logik

switch (rex::getEnvironment()) {
    case 'backend':
        // Backend-spezifischer Code
        break;
    case 'frontend':
        // Frontend-spezifischer Code
        break;
    case 'console':
        // CLI-spezifischer Code
        break;
}

AddOn-Config mit rex::setConfig

// In install.php
rex::setConfig('addon_installed', date('Y-m-d H:i:s'));
rex::setConfig('addon_version', '1.0.0');

// Mehrere Werte auf einmal setzen
rex::setConfig([
    'api_endpoint' => 'https://api.example.com',
    'api_timeout' => 30,
    'cache_lifetime' => 3600,
]);

// Später auslesen
$installed = rex::getConfig('addon_installed');
$version = rex::getConfig('addon_version');

Wichtige Konstanten

rex::CONFIG_NAMESPACE  // 'core'