Signatur
Beschreibung
UI\run() ist der Einstiegspunkt für jede grafische Anwendung, die auf der PHP-UI-Erweiterung (php-ui / libui) basiert. Die Funktion übergibt die Kontrolle an die native UI-Bibliothek und verarbeitet dort kontinuierlich Ereignisse wie Mausklicks, Tastatureingaben und Fenster-Neuzeichnungen.
Die Schleife läuft so lange, bis keine Fenster mehr geöffnet sind oder UI\quit() aufgerufen wird. PHP-Code, der nach UI\run() steht, wird erst nach Beendigung der Schleife ausgeführt.
Typischerweise wird zuerst das Fenster-Layout mit UI\Window, UI\Controls\* und entsprechenden Event-Callbacks aufgebaut und dann einmalig UI\run() am Ende des Skripts aufgerufen.
Die Funktion gibt keinen Rückgabewert zurück. Tritt ein interner Fehler in der zugrunde liegenden libui auf, wird eine UI\Exception geworfen.
Rückgabewert
UI\quit() die Schleife beendet hat.Beispiele
Einfaches Fenster mit einem Button
<?php
use UI\Window;
use UI\Controls\Button;
use UI\Controls\Box;
$window = new Window('Hallo UI', 400, 200, false);
$window->setMargined(true);
$box = new Box(Box::Vertical);
$box->setPadded(true);
$button = new Button('Klick mich!');
$button->on(Button::Clicked, function () use ($window) {
$window->msg('Ereignis', 'Button wurde geklickt!');
});
$box->append($button, false);
$window->add($box);
$window->show();
// Übergibt die Kontrolle an die UI-Ereignisschleife
UI\run();
echo 'Fenster wurde geschlossen.' . PHP_EOL;
Fenster mit Beenden-Callback
<?php
use UI\Window;
use UI\Controls\Button;
$window = new Window('Beispiel', 300, 150, false);
$btn = new Button('Beenden');
$btn->on(Button::Clicked, function () {
// Schleife sauber beenden
UI\quit();
});
$window->add($btn);
$window->show();
UI\run();
echo 'Anwendung beendet.' . PHP_EOL;
// Wichtig · Fallstricke
Blockierendes Verhalten: UI\run() blockiert den PHP-Ausführungsstrom vollständig. Hintergrund-Tasks (z. B. regelmäßige Datenbankabfragen) müssen über UI\tick() oder separate Threads realisiert werden.
Einmalige Nutzung: Die Funktion darf pro Prozess nur einmal aufgerufen werden. Ein erneuter Aufruf nach Beendigung der Schleife führt zu undefiniertem Verhalten.
Plattformabhängigkeit: Die PHP-UI-Erweiterung setzt eine kompilierte libui voraus und ist nicht standardmäßig in PHP enthalten (PECL-Erweiterung). CLI-Umgebung wird vorausgesetzt – Web-Server-Umgebungen werden nicht unterstützt.