stream_get_wrappers în PHP

Stream-uri PHP 5.0+

Returnează lista protocoalelor pe care funcțiile de fișier le înțeleg (file, http, https, php, data, phar...).

Sintaxă
stream_get_wrappers(): array

Ce face stream_get_wrappers

Funcțiile de fișier din PHP (fopen, file_get_contents) pot lucra cu multe tipuri de adrese, prin „wrappere”: https://, php://memory, data://, compress.zlib://. stream_get_wrappers spune ce wrappere sunt disponibile pe serverul curent.

Lista depinde de extensiile instalate: https apare doar cu OpenSSL, zip doar cu extensia zip. Wrapperele înregistrate de tine cu stream_wrapper_register apar și ele.

Ce returnează

Un tablou cu numele wrapperelor, fără ://.

Exemple

Exemplul 1: Este disponibil un wrapper?

<?php
$wrappere = stream_get_wrappers();

foreach (["file", "php", "https", "data", "telnet"] as $nume) {
    echo $nume . ": " . (in_array($nume, $wrappere) ? "da" : "nu") . "\n";
}

Rezultat

file: da
php: da
https: da
data: da
telnet: nu

Exemplul 2: Un mesaj clar dacă lipsește HTTPS

<?php
if (!in_array("https", stream_get_wrappers())) {
    exit("Activează extensia openssl ca să descarci cursul valutar.\n");
}
echo "Se poate descărca prin HTTPS.";

Rezultat

Se poate descărca prin HTTPS.

Greșeli frecvente

  • Cauți numele cu :// la final: in_array("https://", ...). Lista conține doar "https".

Comenzi înrudite

  • stream_wrapper_register: Înregistrează un protocol propriu (de exemplu mem://), implementat de o clasă, pentru fopen, file_get_contents și celelalte.
  • stream_get_transports: Returnează tipurile de socket pe care le acceptă stream_socket_client și fsockopen (tcp, udp, unix, ssl, tls…).
  • stream_get_filters: Returnează lista filtrelor de stream disponibile (string.toupper, convert.*, zlib.* și cele proprii).