Signatur
Beschreibung
UI\Controls\Group gehört zur PHP-UI-Erweiterung (php-ui / libui-Bindung) und stellt einen visuellen Rahmen mit Titel dar, der andere Controls aufnehmen kann. Dadurch lassen sich zusammengehörige Formularfelder oder Bedienelemente optisch und semantisch bündeln – vergleichbar mit dem HTML-Element <fieldset>.
Eine Group kann genau ein direkt untergeordnetes Control aufnehmen. Um mehrere Controls zu gruppieren, platziert man innerhalb der Group zunächst ein Layout-Control wie UI\Controls\Box oder UI\Controls\Grid und fügt dort die eigentlichen Steuerelemente ein.
Der Titel der Group wird mit dem Konstruktor übergeben und kann über setTitle() nachträglich geändert sowie mit getTitle() abgefragt werden. Die optionale Innenabstand-Funktion (Margin) lässt sich per setMargin() aktivieren, sodass der Inhalt nicht direkt am Rahmen klebt.
Die Klasse eignet sich überall dort, wo eine Desktop-GUI-Anwendung mit libui in strukturierte Abschnitte aufgeteilt werden soll – etwa Einstellungsdialoge mit mehreren thematischen Bereichen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $title Pflicht | string | Die Beschriftung, die als Rahmentitel der Group angezeigt wird. |
Beispiele
Einfache Group mit einem Label
<?php
use UI\Window;
use UI\Controls\Group;
use UI\Controls\Label;
use UI\Controls\Box;
use UI\Point;
use UI\Size;
$window = new Window('Group-Demo', new Size(400, 200), false);
$group = new Group('Benutzerinformationen');
$group->setMargin(true);
$label = new Label('Hier stehen die Infos');
$group->append($label);
$window->add($group);
$window->show();
UI\run();
Group mit Box als innerem Layout-Container
<?php
use UI\Window;
use UI\Controls\Group;
use UI\Controls\Box;
use UI\Controls\Entry;
use UI\Controls\Label;
use UI\Size;
$window = new Window('Formular', new Size(400, 300), false);
$group = new Group('Anmeldedaten');
$group->setMargin(true);
// Box als Container für mehrere Controls
$box = new Box(Box::Vertical);
$box->setPadded(true);
$box->append(new Label('Benutzername:'));
$box->append(new Entry());
$box->append(new Label('Passwort:'));
$box->append(new Entry());
// Nur die Box wird der Group direkt hinzugefügt
$group->append($box);
$window->add($group);
$window->show();
UI\run();
// Wichtig · Fallstricke
Wichtig: UI\Controls\Group ist Teil der experimentellen php-ui-Erweiterung und nicht im Standard-PHP-Lieferumfang enthalten. Die API gilt als instabil und kann sich zwischen Versionen ändern.
Eine Group akzeptiert per append() exakt ein Child-Control. Ein zweiter Aufruf von append() überschreibt das vorherige Kind oder löst einen Fehler aus – daher stets ein Wrapper-Layout verwenden, wenn mehrere Controls benötigt werden.
Die Erweiterung ist primär für Einzelplatz-Desktop-Anwendungen gedacht und nicht für serverseitiges PHP geeignet.