Argumentzeichenkette

Mit den Klassen ArgumentText und MessageArgumentFormatter lassen sich Texte mit integrierter Map anlegen, verwalten und übersetzen.

Eine Argumentzeichenkette hat folgenden Aufbau:

Beschreibungstext mit Platzhaltern::key1=value1::key2=value2
─────────⯆───────────╯
           Textzeile            ╰─⯆─╯          ╰──⯆───╯
                       Trennzeichen ╰─⯆────╯    Zweites
                                       Erstes      Schlüssel/
                                      Schlüssel/   Wert-Paar
                                       Wert-Paar

MessageArgumentFormatter

Die Klasse MessageArgumentFormatter erlaubt es schnell, einfach und sicher eine Argumentzeichenkette zusammenzustellen. Diese kann dann zum Beispiel im Zusammenhang mit Localen oder Exceptions verwendet werden.

$text = (new \Alvine\Text\ArgumentText('Das ist ein Test'))->setValue('a','b');
echo (string) $text;
// ⇢ Das ist ein Test::a=b

ArgumentText

Außerdem bietet die Klasse ArgumentText die Vorlage für die Verwendung mit dem MessageArgumentFormatter. In diesem Beispiel wird eine Nachricht erstellt und in der Zeichenkette die Argumente mitgegeben.

$text=(new \Alvine\Text\ArgumentText('Meine {key} Meldung'))
    ->setValue('key', 'erste');

echo (string) $text;
// ⇢ Meine {key} Meldung::key=erste

echo (new \Alvine\Text\MessageArgumentFormatter())->format($text);
// ⇢ Meine erste Meldung

Ein wichtiges Einsatzgebiet sind Fehlermeldungen. Hier können die Meldungen mit den Argumenten gespeichert werden.

try {
    // Fehler tritt auf
    throw new Exception('Kein freier Speicherplatz');
} catch(\Exception $ex) {
    $message="Es ist der Fehler '{error}' aufgetreten.::error=".$ex->getMessage();
}

echo (new \Alvine\Text\MessageArgumentFormatter())->format($message);
// ⇢ Es ist der Fehler 'Kein freier Speicherplatz' aufgetreten.

Kommentare