Signatur
Beschreibung
UI\Controls\Picker ist ein GUI-Steuerelement der PHP-UI-Erweiterung (php-ui / libui), das dem Benutzer eine plattformspezifische Datums- oder Zeitauswahl präsentiert. Durch den Einsatz nativer Betriebssystem-Dialoge fügt sich das Widget optisch nahtlos in Windows-, macOS- und Linux-Oberflächen ein.
Beim Instanziieren kann über den Konstruktor-Parameter $type festgelegt werden, ob ein reiner Datumswähler (Picker::Date), ein reiner Zeitwähler (Picker::Time) oder ein kombinierter Datum-/Zeit-Wähler (Picker::DateTime) erstellt wird. Der gewählte Wert lässt sich anschließend über getValue() auslesen.
Das Steuerelement eignet sich überall dort, wo Benutzer ein Datum oder eine Uhrzeit eingeben sollen – beispielsweise in Formularen für Terminverwaltung, Protokollierung oder Konfigurationsdialoge – und wo man auf fehleranfällige manuelle Texteingaben verzichten möchte.
Die Klasse gehört zur UI\Controls-Erweiterung und erfordert, dass die PECL-Erweiterung ui kompiliert und geladen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type | int | Picker::Date | Legt den Picker-Typ fest. Erlaubte Werte sind die Klassenkonstanten Picker::Date, Picker::Time und Picker::DateTime. |
Rückgabewert
Beispiele
Einfaches Datums-Picker-Fenster
<?php
use UI\Window;
use UI\Controls\Picker;
use UI\Controls\Box;
use UI\Controls\Button;
$window = new Window('Datum wählen', 400, 200, false);
$window->setMargined(true);
$box = new Box(Box::Vertical);
$box->setPadded(true);
// Datumswähler erstellen (Standard: Picker::Date)
$datePicker = new Picker(Picker::Date);
$box->append($datePicker);
$button = new Button('Datum anzeigen');
$button->onClicked(function () use ($datePicker) {
$value = $datePicker->getValue();
// Liefert z. B. ['year' => 2024, 'month' => 6, 'day' => 15]
echo 'Gewähltes Datum: '
. $value['year'] . '-'
. str_pad($value['month'], 2, '0', STR_PAD_LEFT) . '-'
. str_pad($value['day'], 2, '0', STR_PAD_LEFT) . PHP_EOL;
});
$box->append($button);
$window->add($box);
$window->show();
UI\main();
Kombinierter Datum-/Zeit-Picker
<?php
use UI\Window;
use UI\Controls\Picker;
use UI\Controls\Box;
$window = new Window('Termin anlegen', 400, 150, false);
$window->setMargined(true);
$box = new Box(Box::Vertical);
$box->setPadded(true);
// Kombinierter Datum- und Zeitwähler
$dtPicker = new Picker(Picker::DateTime);
$box->append($dtPicker);
$window->add($box);
$window->show();
UI\main();
// Nach Benutzerinteraktion:
$val = $dtPicker->getValue();
printf(
'Termin: %04d-%02d-%02d %02d:%02d:%02d' . PHP_EOL,
$val['year'], $val['month'], $val['day'],
$val['hour'], $val['minute'], $val['second']
);
// Wichtig · Fallstricke
Plattformabhängigkeit: Das Aussehen des Pickers variiert je nach Betriebssystem, da die native UI-Bibliothek (libui) verwendet wird. Unter Linux ist das Erscheinungsbild mitunter eingeschränkter als unter Windows oder macOS.
Verfügbarkeit: Die UI-Erweiterung ist eine experimentelle PECL-Erweiterung; der API-Umfang und Methoden-Namen können sich zwischen Versionen ändern. Produktive Nutzung sollte mit Vorsicht erfolgen.
Rückgabewert von getValue(): Das Array enthält je nach Picker-Typ die Schlüssel year, month, day (bei Picker::Date) und/oder hour, minute, second (bei Picker::Time).