Start · Sprachen · PHP · Referenz · UI\MenuItem

UI\MenuItem

Klasse

Repräsentiert einen einzelnen Eintrag in einem <code>UI\Menu</code>; Instanzen werden ausschließlich über <code>UI\Menu::append()</code> und verwandte Methoden erzeugt.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\MenuItem

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

Siehe auch