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

UI\Controls\Spin

Klasse

Eine Spin Box ist ein Eingabefeld mit Auf-/Ab-Schaltflächen zur Auswahl eines Ganzzahlwertes innerhalb eines definierten Bereichs.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Controls\Spin extends UI\Control

Beschreibung

UI\Controls\Spin ist ein Steuerelement (Widget) aus der ui-Erweiterung (php-ui / libui), das ein numerisches Eingabefeld mit zwei kleinen Schaltflächen (Pfeil nach oben, Pfeil nach unten) darstellt. Der Benutzer kann damit einen Ganzzahlwert innerhalb eines festgelegten Minimum- und Maximumbereichs auswählen – entweder durch Klicken der Pfeile oder durch direkte Texteingabe.

Das Steuerelement eignet sich besonders für Einstellungen, bei denen ein ganzzahliger Wert in einem bekannten Bereich erwartet wird, z. B. Lautstärke (0–100), Anzahl von Elementen oder Zeitintervalle. Es entspricht dem nativen Spinner-Widget des jeweiligen Betriebssystems.

Nach dem Erzeugen kann der aktuelle Wert mit getValue() abgefragt und mit setValue() gesetzt werden. Über onChange() lässt sich ein Callback registrieren, das bei jeder Wertänderung aufgerufen wird.

Hinweis: Diese Klasse ist Teil der experimentellen ui-PECL-Erweiterung und steht nur zur Verfügung, wenn diese Erweiterung installiert ist. Die API kann sich zwischen Versionen ändern.

Parameter

Name Typ Default Beschreibung
$min Pflicht int Der minimale Ganzzahlwert, den der Benutzer auswählen kann.
$max Pflicht int Der maximale Ganzzahlwert, den der Benutzer auswählen kann. Muss größer als min sein.

Beispiele

Einfache Spin Box mit Wertebereich 1–100

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

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

$box = new Box(Box::Vertical);
$window->add($box);

// Spin Box: Bereich 1 bis 100, Startwert wird auf 50 gesetzt
$spin = new Spin(1, 100);
$spin->setValue(50);

$box->append($spin);

// Callback bei Wertänderung
$spin->onChange(function(Spin $s) {
    echo 'Neuer Wert: ' . $s->getValue() . PHP_EOL;
});

$window->show();
UI\run();

Spin Box für Lautstärkeregler (0–100)

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

$window = new Window('Lautstärke', new Size(300, 120), false);

$box = new Box(Box::Vertical);
$window->add($box);

$label = new Label('Lautstärke (0-100):');
$box->append($label);

$spin = new Spin(0, 100);
$spin->setValue(75);
$box->append($spin);

$spin->onChange(function(Spin $s) use ($label) {
    $label->setText('Lautstärke: ' . $s->getValue() . '%');
});

$window->show();
UI\run();

// Wichtig · Fallstricke

Experimentelle Erweiterung: UI\Controls\Spin gehört zur ui-PECL-Erweiterung, die als experimentell gilt. Die Verfügbarkeit und API-Stabilität ist nicht garantiert; produktiver Einsatz sollte sorgfältig abgewogen werden.

Nur Ganzzahlen: Die Spin Box unterstützt ausschließlich int-Werte. Für Gleitkommazahlen gibt es kein direktes Äquivalent in dieser Bibliothek; hier müsste ggf. ein Schieberegler (UI\Controls\Slider) mit entsprechender Skalierung verwendet werden.

Plattformabhängig: Das Aussehen des Steuerelements entspricht dem nativen Spinner des jeweiligen Betriebssystems (Windows, macOS, Linux/GTK), daher kann das Verhalten bei Randfällen leicht variieren.