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.