Start · Sprachen · PHP · Referenz · UI\Window

UI\Window

Klasse

Repräsentiert ein natives UI-Fenster im PHP-UI-Framework (ui-Extension) und dient als oberste Ebene einer grafischen Benutzeroberfläche.

seit PHP 7.0.0 Kategorie: misc

Signatur

class UI\Window extends UI\Control

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

Typ

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.