Signatur
Beschreibung
UI\Window ist die Basisklasse für Fenster in der PHP UI-Erweiterung (basierend auf libui). Ein Fenster ist der Container der obersten Ebene, der alle anderen UI-Steuerelemente wie Schaltflächen, Textfelder und Layouts aufnehmen kann. Es besitzt eine Titelleiste, kann in der Größe verändert werden und verfügt über einen Schließen-Button.
Jede Anwendung benötigt mindestens ein UI\Window-Objekt. Dem Fenster wird über die Methode setChild() genau ein direkt untergeordnetes Steuerelement zugewiesen; typischerweise handelt es sich dabei um ein Layout-Objekt (z. B. UI\Controls\Box), das weitere Steuerelemente enthält.
Fenster können mit Menüleisten (UI\Menu) kombiniert werden und bieten Callback-Mechanismen für Ereignisse wie das Schließen des Fensters. Um die Ereignisschleife zu starten, muss nach dem Erstellen des Fensters UI\run() aufgerufen werden.
Die PHP-UI-Erweiterung ist eine experimentelle, nicht in der Standard-PHP-Distribution enthaltene PECL-Erweiterung, die native GUI-Anwendungen mit PHP ermöglicht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $title Pflicht | string | Der Titel des Fensters, der in der Titelleiste angezeigt wird. | |
| $width Pflicht | int | Die anfängliche Breite des Fensters in Pixeln. | |
| $height Pflicht | int | Die anfängliche Höhe des Fensters in Pixeln. | |
| $hasMenu | bool | false | Gibt an, ob das Fenster eine Menüleiste besitzt. Wenn true, können zuvor erstellte UI\Menu-Objekte angezeigt werden. |
Rückgabewert
Beispiele
Einfaches Fenster mit einem Label erstellen
<?php
// Erfordert die PHP UI-Erweiterung (PECL ui)
$window = new UI\Window('Mein erstes Fenster', 640, 480, false);
$label = new UI\Controls\Label('Hallo, Welt!');
$window->setChild($label);
$window->show();
UI\run();
Fenster mit Schließen-Callback und Box-Layout
<?php
// Erfordert die PHP UI-Erweiterung (PECL ui)
$window = new UI\Window('Demo-Anwendung', 800, 600, false);
// Vertikale Box als Root-Layout
$box = new UI\Controls\Box(UI\Controls\Box::Vertical);
$box->setPadded(true);
$button = new UI\Controls\Button('Klick mich!');
$button->onClicked(function() use ($window) {
$window->setTitle('Button wurde geklickt!');
});
$box->append($button, false);
$window->setChild($box);
$window->setMargined(true);
// Callback beim Schließen des Fensters
$window->onClosing(function() {
UI\quit();
return true; // Fenster schließen bestätigen
});
$window->show();
UI\run();
// Wichtig · Fallstricke
Experimentelle Erweiterung: Die PHP-UI-Erweiterung (PECL ui) ist nicht Teil der Standard-PHP-Distribution und muss separat über PECL installiert werden. Die API kann sich zwischen Versionen ändern.
Kindknoten: Ein UI\Window kann nur ein direktes Kind-Steuerelement aufnehmen. Für mehrere Steuerelemente muss ein Layout wie UI\Controls\Box oder UI\Controls\Grid als Zwischenschicht verwendet werden.
Ereignisschleife: Ohne den Aufruf von UI\run() wird das Fenster zwar erstellt, aber die grafische Oberfläche reagiert nicht auf Ereignisse. UI\run() blockiert den weiteren Programmablauf, bis UI\quit() aufgerufen wird.
Plattformabhängigkeit: Da libui native Betriebssystem-Widgets verwendet, kann das Aussehen des Fensters je nach Plattform (Windows, macOS, Linux) unterschiedlich sein.