Lang Container - (lang\container.class.php)

new lang\container() - Object

__construct ([$mixed $context = null[, $bool $sort = false]])
$context optional; kommagetrennter String (z. B. 'de-DE,de;q=0.9,en;q=0.8'), Array von Sprachcodes/Strings, new lang()-Objekt, bestehender lang\container oder null; default ist null
$sort optional; bei true werden die Sprachen nach Qualitätsfaktor (weight) absteigend sortiert; default ist false
initialisiert einen neuen Container für Sprachen; implementiert \Countable, \IteratorAggregate und \ArrayAccess zur flexiblen Handhabung wie ein natives PHP-Array
$container = new lang\container('de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7'); // Accept-Language-Header
$fromArray = new lang\container(['de', 'en']);
$sorted = new lang\container('en;q=0.5,de;q=0.9', true);
$container[] = 'it'; // Hinzufügen via ArrayAccess
__toString ()
gibt die enthaltenen Sprachen als kommagetrennten string in der Form eines HTTP Accept-Language-Headers zurück
$container = new lang\container('de,en');
echo $container; // Ausgabe: 'de,en'
__invoke ()
ermöglicht den Aufruf des Objekts als Funktion ($container()); gibt den kommagetrennten String direkt per echo aus und liefert true zurück
$container = new lang\container('de,en');
$container(); // Direkte Ausgabe: 'de,en'
__debugInfo ()
liefert das interne array aller enthaltenen new lang()-Objekte für var_dump() oder print_r()
$container = new lang\container('de,en');
var_dump($container);
count ()
gibt die Anzahl der enthaltenen Sprachen als integer zurück; implementiert \Countable (ermöglicht auch count($container))
$container = new lang\container('de,en,fr');
echo $container->count(); // 3
echo count($container); // 3
getIterator ()
implementiert \IteratorAggregate; gibt ein new ArrayIterator-Objekt zurück, wodurch der Container direkt mit foreach durchlaufen werden kann
$container = new lang\container('de,en');
foreach ($container as $lang) {
  echo $lang->code;
}

Element-Zugriff & Prüfung

getLang ()
sucht bevorzugt nach der konfigurierten Standard-Sprache (lang::getDefault(), z. B. 'de') und gibt diese als new lang()-Instanz zurück; falls nicht vorhanden, wird das erste Element geliefert; bei leerem Container null
$container = new lang\container('en,de,fr');
$pref = $container->getLang(); // Liefert bevorzugt 'de' (Standard-Sprache)
firstLang ()
liefert das erste Sprachelement des Containers als new lang()-Objekt (z. B. die Sprache mit der höchsten Priorität nach einer Sortierung); bei leerem Container null
$container = new lang\container('en;q=0.5,de;q=0.9', true);
$first = $container->firstLang();
echo $first->code; // 'de' (höchste Gewichtung)
containLang ($mixed $item[, $bool $strict = false])
$item Sprachcode (z. B. 'de', 'de-DE'), Sprachstring oder new lang()-Objekt; Pflicht
$strict optional; bei true muss der vollständige localCode exakt übereinstimmen; default ist false
prüft, ob die angegebene Sprache im Container existiert; bei $strict = false genügt die Übereinstimmung des Basis-Sprachcodes; gibt true zurück, andernfalls false
$container = new lang\container('de,en-US');
$container->containLang('de'); // true
$container->containLang('de-DE'); // true (Basis-Code 'de' stimmt überein)
$container->containLang('de-DE', true); // false (strikt: 'de-DE' ist nicht explizit enthalten)
$container->containLang('en-US', true); // true
empty ()
prüft, ob der Container keine Sprachen enthält; gibt true zurück wenn leer, andernfalls false
$container = new lang\container();
$container->empty(); // true

Manipulation & Export

add ([$mixed $context = null[, $bool $sort = false[, $bool $frontPosition = false]]])
$context optional; kommagetrennter String, Array, new lang()-Objekt oder lang\container; default ist null
$sort optional; bei true wird die Liste nach dem Hinzufügen nach Gewichtung sortiert; default ist false
$frontPosition optional; bei true werden die neuen Elemente am Anfang des Containers eingefügt; default ist false
fügt neue Sprachen zum Container hinzu (ungültige Sprachen werden übersprungen); gibt bei Erfolg true zurück, andernfalls false
$container = new lang\container('de');
$container->add(['en', 'it']);
$container->add('fr', false, true); // An erster Position voranstellen
sort ()
sortiert die enthaltenen Sprachen absteigend nach ihrem Qualitätsfaktor (weight), sodass die höchste Priorität am Anfang steht; gibt true zurück
$container = new lang\container('en;q=0.5,de;q=0.9');
$container->sort();
echo $container; // 'de;q=0.9,en;q=0.5'
toLangCodeArray ([$bool $unique = false[, $bool $localCode = false]])
$unique optional; bei true werden Duplikate herausgefiltert; default ist false
$localCode optional; bei true wird der lokale Code inklusive Länderkennung (z. B. 'de-DE') exportiert, sonst nur der Basiscode ('de'); default ist false
exportiert alle enthaltenen Sprachen als einfaches array von Sprachcodes
$container = new lang\container('de-DE,de,en-US');
$container->toLangCodeArray(true); // ['de', 'en']
$container->toLangCodeArray(true, true); // ['de-DE', 'de', 'en-US']

Statische Operationen

static lang\container::isLangContainer ([$mixed $item = null])
$item optional; zu prüfende Variable oder Objekt; default ist null
prüft, ob der übergebene Wert eine Instanz von new lang\container() ist; gibt true zurück wenn Instanz, andernfalls false
$container = new lang\container('de,en');
lang\container::isLangContainer($container); // true
lang\container::isLangContainer(['de']); // false (reines Array)
static lang\container::unique ($object $container[, $bool $localCode = false])
$container Quell-Container als new lang\container(); Pflicht
$localCode optional; bei true wird auf Eindeutigkeit des localCode (z. B. 'de-DE') statt des Basiscodes geprüft; default ist false
erstellt einen neuen new lang\container() ohne doppelte Sprachen aus dem übergebenen Container und gibt diesen zurück
$src = new lang\container('de,en,de,fr');
$unique = lang\container::unique($src);
echo $unique; // 'de,en,fr'
static lang\container::intersect ($object $first, $object $second[, $bool $strict = false])
$first Basis-Container ($mainContainer) als new lang\container(); Pflicht
$second Filter-Container ($subContainer) als new lang\container(); Pflicht
$strict optional; bei true muss der vollständige localCode übereinstimmen; default ist false
bildet die Schnittmenge zweier Sprach-Container (alle Sprachen aus dem ersten Container, die auch im zweiten Container vorkommen) und gibt das Ergebnis als neue new lang\container()-Instanz zurück
$clientAccept = new lang\container('de-DE,de;q=0.9,en-US;q=0.8');
$serverSupported = new lang\container('de,en,it');
$match = lang\container::intersect($clientAccept, $serverSupported);
echo $match; // 'de-DE,de,en-US'
static lang\container::removeCntry ($object $container)
$container Quell-Container als new lang\container(); Pflicht
erzeugt einen neuen new lang\container(), bei dem von allen enthaltenen Sprachen die Länderkürzel über lang::removeCntry() entfernt wurden (z. B. wird aus 'de-DE' reines 'de')
$src = new lang\container('de-DE,en-US,fr-CA');
$clean = lang\container::removeCntry($src);
echo $clean; // 'de,en,fr'