Start · Sprachen · PHP · Referenz · LuaSandboxSyntaxError

LuaSandboxSyntaxError

Klasse

Repräsentiert einen Syntaxfehler, der beim Laden oder Kompilieren von Lua-Code in der <code>LuaSandbox</code>-Erweiterung auftritt.

Kategorie: error

Signatur

class LuaSandboxSyntaxError extends LuaSandboxError

Beschreibung

LuaSandboxSyntaxError ist eine Ausnahme-Klasse, die geworfen wird, wenn Lua-Code, der über LuaSandbox::loadString() oder verwandte Methoden übergeben wird, einen Syntaxfehler enthält. Sie erweitert LuaSandboxError und ermöglicht es, gezielt auf Syntaxprobleme im Lua-Quellcode zu reagieren.

Die Klasse ist Teil der LuaSandbox-PHP-Erweiterung, die eine sichere Ausführungsumgebung für Lua-Skripte in PHP bereitstellt. Durch das Fangen von LuaSandboxSyntaxError lassen sich fehlerhafte Lua-Eingaben vom Benutzer oder aus externen Quellen von anderen Laufzeitfehlern unterscheiden.

Typische Anwendungsfälle sind Validierung von Benutzereingaben (z. B. in Wiki-Systemen wie MediaWiki), Debugging von dynamisch generiertem Lua-Code sowie die benutzerfreundliche Fehlerausgabe bei fehlerhaften Lua-Skripten. Die Fehlermeldung enthält in der Regel Position und Beschreibung des Syntaxfehlers.

Beispiele

Syntaxfehler in Lua-Code abfangen

<?php
// LuaSandbox-Erweiterung muss installiert sein
$sandbox = new LuaSandbox();
$sandbox->setMemoryLimit(50 * 1024 * 1024);
$sandbox->setCPULimit(10);

$luaCode = 'function broken( return "fehlt etwas" end'; // ungültiger Lua-Code

try {
    $sandbox->loadString($luaCode);
} catch (LuaSandboxSyntaxError $e) {
    echo 'Lua-Syntaxfehler gefunden: ' . $e->getMessage() . PHP_EOL;
} catch (LuaSandboxError $e) {
    echo 'Anderer LuaSandbox-Fehler: ' . $e->getMessage() . PHP_EOL;
}
Lua-Syntaxfehler gefunden: [string "..."]:1: '=' expected near 'return'

Lua-Eingabe vom Benutzer validieren

<?php
function validateLuaCode(string $code): bool {
    $sandbox = new LuaSandbox();
    $sandbox->setMemoryLimit(10 * 1024 * 1024);
    $sandbox->setCPULimit(2);

    try {
        $sandbox->loadString($code);
        return true;
    } catch (LuaSandboxSyntaxError $e) {
        echo 'Ungültiger Lua-Code: ' . $e->getMessage() . PHP_EOL;
        return false;
    }
}

$valid   = validateLuaCode('return 1 + 2');
$invalid = validateLuaCode('return 1 +');

var_dump($valid, $invalid);
Ungültiger Lua-Code: [string "..."]:1: unexpected symbol near '<eof>' bool(true) bool(false)

// Wichtig · Fallstricke

Voraussetzung: Die LuaSandbox-PHP-Erweiterung muss installiert und aktiviert sein (z. B. per PECL oder als Teil von MediaWiki). Sie ist nicht standardmäßig in PHP enthalten.

Beim Fangen von Lua-Fehlern empfiehlt es sich, die Hierarchie zu beachten: LuaSandboxSyntaxErrorLuaSandboxErrorException. Spezifischere Catch-Blöcke sollten immer vor allgemeineren stehen.

Die Fehlermeldungen enthalten häufig Zeilennummern und Positionsangaben im Lua-Code; diese sollten bei der Ausgabe an den Endnutzer gegebenenfalls bereinigt oder eingeschränkt werden, um interne Details nicht preiszugeben.