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

UI\Controls\Entry

Klasse

Ein einzeiliges Texteingabefeld für Klartext, Passwörter oder Suchbegriffe innerhalb einer UI-Anwendung.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Controls\Entry extends UI\Control

Beschreibung

UI\Controls\Entry ist ein einfaches, einzeiliges Texteingabe-Widget der PHP-UI-Erweiterung (php-ui / libui). Es eignet sich für typische Formular-Eingaben wie Namen, URLs, Passwörter oder Suchbegriffe. Der Typ des Feldes wird beim Erstellen über eine Konstante festgelegt und beeinflusst das Aussehen sowie das Verhalten (z. B. versteckte Zeichen bei Passwörtern).

Die Klasse stellt Methoden bereit, um den aktuellen Wert auszulesen (getText()), programmatisch zu setzen (setText()) sowie das Feld zu sperren (setReadOnly()). Außerdem kann über onChange() ein Callback registriert werden, der bei jeder Änderung des Inhalts aufgerufen wird.

Unterstützte Eingabetypen sind UI\Controls\Entry::Normal (Standardtext), UI\Controls\Entry::Password (Passworteingabe, Zeichen werden verborgen) und UI\Controls\Entry::Search (Suchfeld mit plattformspezifischem Aussehen). Der Typ kann nach der Erstellung nicht mehr geändert werden.

Die Klasse ist Teil der php-ui-Erweiterung und setzt eine native UI-Event-Loop voraus (UI\run()). Sie ist daher nur in Desktop-Applikationen sinnvoll, nicht im Kontext von Webserver-Requests.

Parameter

Name Typ Default Beschreibung
$type int UI\Controls\Entry::Normal Bestimmt den Eingabetyp. Erlaubte Werte: UI\Controls\Entry::Normal, UI\Controls\Entry::Password oder UI\Controls\Entry::Search.

Rückgabewert

Typ

Beispiele

Einfaches Texteingabefeld in einem Fenster

<?php
use UI\Window;
use UI\Controls\Box;
use UI\Controls\Entry;
use UI\Controls\Button;

$win = new Window('Eingabe-Beispiel', 400, 200, true);
$win->setMargined(true);

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

$entry = new Entry(Entry::Normal);
$entry->setText('Hallo Welt');

$btn = new Button('Wert ausgeben');
$btn->onClick(function() use ($entry) {
    echo 'Eingabe: ' . $entry->getText() . PHP_EOL;
});

$box->append($entry);
$box->append($btn);

$win->setChild($box);
$win->show();

UI\run();
Eingabe: Hallo Welt

Passwortfeld mit onChange-Callback

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

$win = new Window('Passwort', 300, 150, false);
$win->setMargined(true);

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

$pwEntry = new Entry(Entry::Password);
$pwEntry->onChange(function() use ($pwEntry) {
    // Wird bei jeder Eingabe aufgerufen
    $len = strlen($pwEntry->getText());
    echo 'Passwortlänge: ' . $len . PHP_EOL;
});

$box->append($pwEntry);
$win->setChild($box);
$win->show();

UI\run();

// Wichtig · Fallstricke

Sicherheitshinweis: Auch bei einem Feld vom Typ Entry::Password liegt der Wert intern als Klartext vor und kann jederzeit über getText() ausgelesen werden. Das Feld verbirgt lediglich die Zeichen in der Darstellung. Passwörter sollten im Arbeitsspeicher so kurz wie möglich gehalten und niemals geloggt werden.

Nur Desktop-Einsatz: Die gesamte php-ui-Erweiterung setzt eine native Event-Loop (UI\run()) voraus und ist nicht für den Einsatz in einem HTTP-Request-Kontext (Apache, FPM usw.) geeignet.

Die Konstanten Entry::Normal, Entry::Password und Entry::Search sind als Klasssenkonstanten (Integer-Werte) definiert. Ein nachträgliches Ändern des Typs ist nicht möglich — dafür muss ein neues Objekt erstellt werden.