Mime Container - (mime\container.class.php)

new mime\container() - Object

__construct ([$mixed $context = null[, $bool $sort = false]])
$context optional; kommagetrennter String (z. B. 'jpg,bmp,png'), Array von Dateiendungen/MIME-Strings, new mime()-Objekt, bestehender mime\container oder null; default ist null
$sort optional; bei true werden die Typen nach Qualitätsfaktor (weight) absteigend sortiert; default ist false
initialisiert einen neuen Container für MIME-Typen; implementiert \Countable, \IteratorAggregate und \ArrayAccess zur flexiblen Nutzung wie ein natives PHP-Array
$container = new mime\container('jpg,bmp,png,image/jpeg');
$fromArray = new mime\container(['jpg', 'xml']);
$sorted = new mime\container('text/html;q=0.8,application/json;q=1.0', true);
$container[] = 'html'; // Hinzufügen via ArrayAccess
__toString ()
gibt die enthaltenen MIME-Typen als kommagetrennten string in der Form eines HTTP Content-Type-/Accept-Headers zurück
$container = new mime\container('jpg,png');
echo $container; // Ausgabe: 'image/jpeg,image/png'
__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 mime\container('jpg,png');
$container(); // Direkte Ausgabe: 'image/jpeg,image/png'
__debugInfo ()
liefert das interne array aller enthaltenen new mime()-Objekte für var_dump() oder print_r()
$container = new mime\container('jpg,png');
var_dump($container);
count ()
gibt die Anzahl der enthaltenen MIME-Typen als integer zurück; implementiert \Countable (ermöglicht auch count($container))
$container = new mime\container('jpg,png,gif');
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 mime\container('jpg,png');
foreach ($container as $mime) {
  echo $mime->code;
}

Element-Zugriff & Prüfung

getMime ()
sucht bevorzugt nach dem konfigurierten Standard-MIME-Typ (mime::getDefault()) und gibt diesen als new mime()-Instanz zurück; falls nicht vorhanden, wird das erste Element geliefert; im Fehlerfall oder bei leerem Container null
$container = new mime\container('jpg,txt,png');
$default = $container->getMime(); // Liefert bevorzugt 'txt' (Standard-Fallback)
firstMime ()
liefert den ersten MIME-Typ des Containers als new mime()-Objekt (z. B. den Typ mit der höchsten Priorität nach einer Sortierung); bei leerem Container null
$container = new mime\container('text/html;q=0.5,application/json;q=1.0', true);
$first = $container->firstMime();
echo $first->code; // 'json' (höchste Gewichtung)
containMime ($mixed $item)
$item Dateiendung, MIME-String oder new mime()-Objekt; Pflicht
prüft, ob der angegebene MIME-Typ im Container enthalten ist; gibt true zurück wenn vorhanden, andernfalls false
$container = new mime\container('jpg,png');
$container->containMime('jpg'); // true
$container->containMime(new mime('image/png')); // true
$container->containMime('gif'); // false
empty ()
prüft, ob der Container keine MIME-Typen enthält; gibt true zurück wenn leer, andernfalls false
$container = new mime\container();
$container->empty(); // true

Manipulation & Export

add ([$mixed $context = null[, $bool $sort = false[, $bool $frontPosition = false]]])
$context optional; kommagetrennter String, Array, new mime()-Objekt oder mime\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 MIME-Typen zum Container hinzu (ungültige Typen werden übersprungen); gibt bei Erfolg true zurück, andernfalls false
$container = new mime\container('jpg');
$container->add(['png', 'gif']);
$container->add('svg', false, true); // Voranstellen an erster Position
sort ()
sortiert die enthaltenen MIME-Typen absteigend nach ihrem Qualitätsfaktor (weight), sodass die höchste Priorität am Anfang steht; gibt true zurück
$container = new mime\container('image/png;q=0.5,image/jpeg;q=0.9');
$container->sort();
echo $container; // 'image/jpeg;q=0.9,image/png;q=0.5'
toMimeCodeArray ([$bool $unique = false])
$unique optional; bei true werden Duplikate herausgefiltert; default ist false
exportiert alle enthaltenen MIME-Typen als einfaches array von Dateiendungen/Codes (z. B. ['jpg', 'png'])
$container = new mime\container('jpg,png,jpg');
$container->toMimeCodeArray(); // ['jpg', 'png', 'jpg']
$container->toMimeCodeArray(true); // ['jpg', 'png']

Statische Operationen

static mime\container::isMimeContainer ([$mixed $item = null])
$item optional; zu prüfende Variable oder Objekt; default ist null
prüft, ob der übergebene Wert eine Instanz von new mime\container() ist; gibt true zurück wenn Instanz, andernfalls false
$container = new mime\container('jpg');
mime\container::isMimeContainer($container); // true
mime\container::isMimeContainer(['jpg']); // false (reines Array)
static mime\container::unique ($object $container)
$container Quell-Container als new mime\container(); Pflicht
erstellt einen neuen new mime\container() ohne doppelte MIME-Codes aus dem übergebenen Container und gibt diesen zurück
$src = new mime\container('jpg,png,jpg,gif');
$unique = mime\container::unique($src);
echo $unique; // 'image/jpeg,image/png,image/gif'
static mime\container::intersect ($object $first, $object $second)
$first Basis-Container ($mainContainer) als new mime\container(); Pflicht
$second Filter-Container ($subContainer) als new mime\container(); Pflicht
bildet die Schnittmenge zweier Container (alle Elemente aus dem ersten Container, die auch im zweiten Container vorkommen) und gibt das Ergebnis als neue new mime\container()-Instanz zurück
$clientAccept = new mime\container('jpg,png,webp');
$serverSupported = new mime\container('jpg,webp,avif');
$match = mime\container::intersect($clientAccept, $serverSupported);
echo $match; // 'image/jpeg,image/webp'