Signatur
Beschreibung
UI\MenuItem stellt einen einzelnen Menüpunkt innerhalb eines UI\Menu dar. Objekte dieser Klasse werden nicht direkt instanziiert – sie entstehen ausschließlich als Rückgabewerte der Methoden UI\Menu::append(), UI\Menu::appendCheck(), UI\Menu::appendQuit(), UI\Menu::appendPreferences() und UI\Menu::appendAbout().
Ein UI\MenuItem kann aktiviert oder deaktiviert werden (enable() / disable()), und für einfache Menüpunkte lässt sich ein Click-Handler via onClick() registrieren. Check-Items (Checkboxen im Menü) bieten zusätzlich isChecked() und setChecked().
Die Klasse gehört zur UI-Erweiterung (php-ui / libui), die plattformübergreifende native Desktop-GUIs für PHP ermöglicht. Sie ist daher nur verfügbar, wenn die entsprechende Erweiterung installiert ist.
Typischer Einsatz: Ein Menü wird mit new UI\Menu('Datei') erzeugt, Einträge werden mit append() hinzugefügt, und das zurückgegebene UI\MenuItem-Objekt wird genutzt, um den Klick-Handler zu setzen oder den Eintrag zu deaktivieren.
Beispiele
Menüpunkt erstellen und Click-Handler registrieren
<?php
use UI\Menu;
use UI\MenuItem;
use UI\Window;
$menu = new Menu('Datei');
// append() gibt ein UI\MenuItem-Objekt zurück
$openItem = $menu->append('Öffnen');
$openItem->onClick(function () {
echo "Menüpunkt 'Öffnen' wurde geklickt." . PHP_EOL;
});
$saveItem = $menu->append('Speichern');
$saveItem->disable(); // Eintrag zunächst deaktivieren
$menu->appendSeparator();
$quitItem = $menu->appendQuit();
$window = new Window('Demo', 640, 480, true);
$window->show();
UI\run();
Check-Item verwenden (z. B. für eine Einstellung)
<?php
use UI\Menu;
use UI\Window;
$menu = new Menu('Ansicht');
// appendCheck() erzeugt einen Menüpunkt mit Häkchen
$darkModeItem = $menu->appendCheck('Dunkles Design');
$darkModeItem->setChecked(true); // Standardmäßig aktiviert
$darkModeItem->onClick(function () use ($darkModeItem) {
$status = $darkModeItem->isChecked() ? 'aktiv' : 'inaktiv';
echo "Dunkles Design: {$status}" . PHP_EOL;
});
$window = new Window('Einstellungen', 640, 480, true);
$window->show();
UI\run();
// Wichtig · Fallstricke
Keine direkte Instanziierung: Der Konstruktor von UI\MenuItem ist nicht öffentlich zugänglich. Versuche, new UI\MenuItem() direkt aufzurufen, führen zu einem Fehler. Einträge dürfen ausschließlich über die Append-Methoden von UI\Menu erzeugt werden.
Plattformabhängigkeit: Bestimmte Menüpunkte wie Quit, Preferences und About werden auf macOS in das systemweite Anwendungsmenü verschoben und erscheinen nicht im deklarierten Menü. Dieses Verhalten ist plattformspezifisch und nicht steuerbar.
Erweiterungsverfügbarkeit: Die gesamte UI\-Erweiterung ist experimentell und nicht im PHP-Core enthalten. Sie muss separat installiert werden (PECL-Paket ui).