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

UI\Controls\Picker

Klasse

Ein <code>Picker</code> ist eine Schaltfläche, die beim Anklicken eine native Datum- und/oder Zeit-Auswahl des Betriebssystems öffnet.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Controls\Picker extends UI\Control

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

Typ

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();
Gewähltes Datum: 2024-06-15

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']
);
Termin: 2024-06-15 09:30:00

// 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).