Start · Sprachen · PHP · Referenz · UI\Controls\Box

UI\Controls\Box

Klasse

Eine Box ordnet mehrere UI-Controls horizontal oder vertikal in einer Zeile/Spalte an.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Controls\Box extends UI\Control

Beschreibung

UI\Controls\Box ist ein Container-Control aus der PHP-UI-Erweiterung (ui), das andere Controls horizontal oder vertikal aneinanderreiht. Ähnlich wie ein Flex-Container in HTML ermöglicht eine Box das strukturierte Anordnen von Schaltflächen, Eingabefeldern, Labels und weiteren Controls innerhalb eines Fensters.

Beim Erzeugen einer Box wird die Ausrichtung festgelegt: UI\Controls\Box::Horizontal oder UI\Controls\Box::Vertical. Controls werden mit der Methode append() hinzugefügt. Optional kann jedem eingefügten Control ein Stretch-Flag mitgegeben werden, das bestimmt, ob das Control den verbleibenden Platz ausfüllen soll.

Boxen können ineinander verschachtelt werden, um komplexe Layouts zu erstellen. So lässt sich z. B. eine vertikale Box mit mehreren horizontalen Boxen kombinieren, um ein Formularlayout zu realisieren.

Das Padding zwischen den Controls kann über setPadded() aktiviert werden, um einen optisch angenehmen Abstand zwischen den enthaltenen Elementen zu erzielen.

Parameter

Name Typ Default Beschreibung
$orientation Pflicht int Legt die Ausrichtung der Box fest. Mögliche Werte sind UI\Controls\Box::Horizontal (horizontale Anordnung) oder UI\Controls\Box::Vertical (vertikale Anordnung).

Beispiele

Einfache horizontale Box mit zwei Schaltflächen

<?php
use UI\Window;
use UI\Controls\Box;
use UI\Controls\Button;
use UI\Point;
use UI\Size;

$window = new Window('Box-Beispiel', new Size(300, 100), false);

$box = new Box(Box::Horizontal);
$box->setPadded(true);

$btn1 = new Button('OK');
$btn2 = new Button('Abbrechen');

$box->append($btn1, true);
$box->append($btn2, true);

$window->add($box);
$window->show();

UI\run();

Verschachtelte Boxen für ein Formularlayout

<?php
use UI\Window;
use UI\Controls\Box;
use UI\Controls\Entry;
use UI\Controls\Label;
use UI\Size;

$window = new Window('Formular', new Size(400, 200), false);

$outerBox = new Box(Box::Vertical);
$outerBox->setPadded(true);

foreach (['Name', 'E-Mail', 'Telefon'] as $label) {
    $row = new Box(Box::Horizontal);
    $row->setPadded(true);

    $lbl = new Label($label . ':');
    $entry = new Entry();

    $row->append($lbl, false);
    $row->append($entry, true);

    $outerBox->append($row, false);
}

$window->add($outerBox);
$window->show();

UI\run();

// Wichtig · Fallstricke

Erweiterung erforderlich: UI\Controls\Box ist Teil der ui-PECL-Erweiterung (ext-ui), die auf der nativen libui-Bibliothek basiert. Diese Erweiterung ist nicht im Standard-PHP-Paket enthalten und muss separat installiert werden.

Die Erweiterung gilt als experimentell; die API kann sich in zukünftigen Versionen noch ändern. Der Einsatz in produktiven Anwendungen sollte daher mit Bedacht erfolgen.

Das Stretch-Argument von append() ist ein bool: true lässt das Control den verfügbaren Platz ausfüllen, false belässt es bei seiner natürlichen Größe.