Start · Sprachen · PHP · Referenz · stream_context_get_params

stream_context_get_params

Funktion

Gibt alle Parameter (Optionen und Benachrichtigungs-Callback) eines Stream-Kontexts als assoziatives Array zurück.

seit PHP 5.3.0 Kategorie: io

Signatur

stream_context_get_params(resource $context): array

Beschreibung

stream_context_get_params() liest sämtliche intern gespeicherten Parameter eines zuvor erstellten Stream-Kontexts aus. Das Ergebnis umfasst sowohl die über stream_context_create() oder stream_context_set_params() gesetzten Optionen als auch einen etwaigen Notification-Callback und weitere Meta-Parameter.

Die Funktion ist besonders nützlich beim Debuggen: Wenn ein Kontext durch mehrere Schichten einer Applikation weitergereicht oder modifiziert wurde, lässt sich mit einem einzigen Aufruf der aktuelle Zustand vollständig inspizieren. Dabei werden alle Wrapper-spezifischen Optionen (z. B. http, ssl, ftp) gesammelt zurückgegeben.

Im Unterschied zu stream_context_get_options(), das ausschließlich die Optionen liefert, enthält das Ergebnis von stream_context_get_params() zusätzlich den Schlüssel notification, der den registrierten Callback enthält, sowie den Schlüssel options, der die eigentlichen Wrapper-Optionen bündelt.

Die Funktion eignet sich auch dazu, einen Kontext vollständig zu klonen oder seinen Zustand zu serialisieren, bevor er an einen externen Dienst übergeben wird.

Parameter

Name Typ Default Beschreibung
$context Pflicht resource Ein gültiger Stream-Kontext, der zuvor mit stream_context_create() erzeugt oder von einer Stream-Funktion zurückgegeben wurde.

Rückgabewert

Typ
array
Beschreibung
Ein assoziatives Array mit den Schlüsseln notification (der registrierte Callback oder null) und options (ein verschachteltes assoziatives Array aller Wrapper-Optionen, identisch zur Ausgabe von stream_context_get_options()).

Beispiele

Vollständige Parameter eines HTTP-Kontexts auslesen

<?php
$callback = function (int $notificationCode, int $severity, ?string $message) {
    // Benachrichtigungen verarbeiten
};

$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/json',
        'content' => json_encode(['key' => 'value']),
        'timeout' => 10,
    ],
    'ssl' => [
        'verify_peer' => true,
    ],
];

$context = stream_context_create($options, ['notification' => $callback]);

$params = stream_context_get_params($context);

echo 'HTTP-Methode: ' . $params['options']['http']['method'] . PHP_EOL;
echo 'SSL verify_peer: ' . ($params['options']['ssl']['verify_peer'] ? 'true' : 'false') . PHP_EOL;
echo 'Notification-Callback gesetzt: ' . (is_callable($params['notification']) ? 'ja' : 'nein') . PHP_EOL;
HTTP-Methode: POST SSL verify_peer: true Notification-Callback gesetzt: ja

Kontext-Zustand nach nachträglicher Änderung prüfen

<?php
$context = stream_context_create([
    'http' => ['method' => 'GET', 'timeout' => 5],
]);

// Option nachträglich überschreiben
stream_context_set_option($context, 'http', 'timeout', 30);

$params = stream_context_get_params($context);

print_r($params);
Array ( [notification] => [options] => Array ( [http] => Array ( [method] => GET [timeout] => 30 ) ) )

// Wichtig · Fallstricke

Unterschied zu stream_context_get_options(): Letztere gibt nur den options-Teil zurück, während stream_context_get_params() das vollständige Parameter-Array inklusive notification liefert. Wenn lediglich Wrapper-Optionen benötigt werden, ist stream_context_get_options() die präzisere Wahl.

Die Funktion gibt eine Kopie der Parameter zurück; Änderungen am zurückgegebenen Array haben keinen Einfluss auf den Kontext selbst. Zum Aktualisieren müssen stream_context_set_option() oder stream_context_set_params() verwendet werden.