Start · Sprachen · PHP · Referenz · UI\run

UI\run

Funktion

Startet die Hauptereignisschleife der <code>UI</code>-Erweiterung und blockiert so lange, bis alle Fenster geschlossen wurden.

seit PHP 0.9.9 Kategorie: misc

Signatur

UI\run(): void

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

Typ
void
Beschreibung
Gibt nichts zurück. Die Funktion kehrt erst zurück, wenn alle geöffneten Fenster geschlossen wurden oder 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 wurde geschlossen.

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;
Anwendung beendet.

// 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.