Signatur
Beschreibung
msgfmt_get_pattern() ist die prozedurale Variante der Methode MessageFormatter::getPattern() aus der ICU-Erweiterung intl. Die Funktion gibt das Formatierungsmuster zurück, das der übergebene MessageFormatter aktuell verwendet, um Nachrichten zusammenzusetzen.
Das zurückgegebene Muster entspricht dem ICU-MessageFormat-Syntax, welche Platzhalter wie {0}, {1, number} oder {2, date, short} unterstützt. Das Muster kann nach der Erstellung eines Formatters über msgfmt_set_pattern() auch nachträglich geändert werden – msgfmt_get_pattern() erlaubt es, das aktuell aktive Muster auszulesen.
Typische Anwendungsfälle sind Debugging, Logging oder das dynamische Weiterverarbeiten von Mustern, z. B. um sie in einer Datenbank zu speichern oder zur Laufzeit zu inspizieren.
- Rückgabe
falsebei einem internen Fehler des Formatters. - Die Funktion ist Teil der intl-Extension und erfordert die ICU-Bibliothek.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | MessageFormatter | Ein MessageFormatter-Objekt, das zuvor mit msgfmt_create() oder new MessageFormatter() erzeugt wurde. |
Rückgabewert
false zurückgegeben.Beispiele
Muster eines MessageFormatters auslesen
<?php
$pattern = 'Hallo, {0}! Du hast {1, number} neue Nachrichten.';
$formatter = msgfmt_create('de_DE', $pattern);
$currentPattern = msgfmt_get_pattern($formatter);
echo $currentPattern;
Muster nach Änderung mit msgfmt_set_pattern auslesen
<?php
$formatter = msgfmt_create('de_DE', '{0} hat {1, number} Punkte.');
// Muster nachträglich ändern
msgfmt_set_pattern($formatter, '{0} hat {1, number, integer} Punkte erreicht.');
// Aktuelles Muster ausgeben
$pattern = msgfmt_get_pattern($formatter);
echo "Aktuelles Muster: " . $pattern . PHP_EOL;
// Formatter mit neuem Muster verwenden
$result = msgfmt_format($formatter, ['Maria', 4200]);
echo $result;
// Wichtig · Fallstricke
Die Funktion ist die prozedurale Entsprechung zur OOP-Methode MessageFormatter::getPattern(). Beide Varianten sind funktional identisch. In modernem Code wird die OOP-Schreibweise bevorzugt.
Die intl-Extension muss aktiviert sein (extension=intl in der php.ini). Fehlt die Extension, wird ein fataler Fehler ausgelöst. Der zurückgegebene Muster-String kann je nach ICU-Version leicht normalisiert sein und muss nicht exakt dem ursprünglich übergebenen Muster entsprechen.