Signatur
Beschreibung
UI\Control ist die abstrakte Basisklasse der PHP-Erweiterung php-ui, die auf der plattformübergreifenden C-Bibliothek libui aufbaut. Alle visuellen Steuerelemente wie Schaltflächen, Eingabefelder, Checkboxen und Fenster erben von dieser Klasse.
Die Klasse ist geschlossen (final in der Vererbungshierarchie von außen nicht erweiterbar), was bedeutet, dass Entwickler keine eigenen Klassen direkt von UI\Control ableiten können. Stattdessen verwendet man die bereitgestellten konkreten Unterklassen wie UI\Controls\Button, UI\Controls\Entry oder UI\Controls\Form.
UI\Control stellt grundlegende Methoden zur Verfügung, die für alle Steuerelemente gelten: Sichtbarkeit steuern (show(), hide()), Aktivierung verwalten (enable(), disable()) sowie das übergeordnete Steuerelement abfragen (getParent()). Diese Methoden sind auf allen konkreten Control-Objekten verfügbar.
Die UI-Erweiterung eignet sich für die Erstellung nativer Desktop-Anwendungen mit PHP unter Windows, macOS und Linux. Sie ist besonders dann sinnvoll, wenn man eine leichtgewichtige, plattformunabhängige GUI benötigt, ohne auf Electron oder ähnliche schwere Frameworks zurückgreifen zu müssen.
Beispiele
Schaltfläche erstellen und anzeigen
<?php
use UI\Window;
use UI\Controls\Button;
use UI\Controls\Box;
use UI\Point;
use UI\Size;
// Hauptfenster erstellen
$window = new Window('Beispiel', new Size(300, 200), false);
$window->setMargin(true);
// Vertikale Box als Container
$box = new Box(Box::Vertical);
$box->setPadded(true);
// Schaltfläche erstellen (erbt von UI\Control)
$button = new Button('Klick mich!');
$button->onClick(function () {
echo "Schaltfläche wurde geklickt!" . PHP_EOL;
});
// Steuerelement in Box einfügen
$box->append($button);
// Prüfen ob das Steuerelement sichtbar ist
if ($button->isVisible()) {
echo "Der Button ist sichtbar." . PHP_EOL;
}
// Schaltfläche deaktivieren
$button->disable();
// Box im Fenster setzen und Fenster anzeigen
$window->setChild($box);
$window->show();
// Event-Loop starten
UI\run();
Steuerelemente dynamisch ein- und ausblenden
<?php
use UI\Window;
use UI\Controls\Button;
use UI\Controls\Box;
use UI\Controls\Check;
use UI\Size;
$window = new Window('Sichtbarkeit', new Size(300, 150), false);
$window->setMargin(true);
$box = new Box(Box::Vertical);
$box->setPadded(true);
$label = new UI\Controls\Label('Ich bin sichtbar');
$toggle = new Button('Toggle Label');
$toggle->onClick(function () use ($label) {
// UI\Control-Methoden: show() und hide()
if ($label->isVisible()) {
$label->hide();
} else {
$label->show();
}
});
$box->append($label);
$box->append($toggle);
$window->setChild($box);
$window->show();
UI\run();
// Wichtig · Fallstricke
Verfügbarkeit: Die UI-Erweiterung ist keine Standard-PHP-Erweiterung und muss separat installiert werden (z. B. über PECL: pecl install ui). Sie setzt eine installierte libui-Bibliothek voraus.
Geschlossene Klasse: UI\Control kann nicht direkt instanziiert oder von Nutzercode beerbt werden. Versuche, eigene Klassen von UI\Control abzuleiten, führen zu einem Fehler. Nutze ausschließlich die vorgesehenen Unterklassen im Namensraum UI\Controls\.
Plattformabhängigkeit: Das Erscheinungsbild der Steuerelemente ist bewusst plattformnativ — unter Windows sehen Controls wie native Win32-Elemente aus, unter macOS wie Cocoa-Elemente. Eine genaue Kontrolle über das visuelle Erscheinungsbild ist nicht möglich.
Stabilität: Die php-ui-Erweiterung gilt noch als experimentell. API-Änderungen zwischen Versionen sind möglich.