Les flux ("streams" en anglais) ont été introduits en PHP 4.3.0 comme méthode de généralisation des fichiers, sockets, connexions réseau, données compressées et autres opérations du même type, qui partagent des opérations communes. Dans sa définition la plus simple, un flux est une ressource qui présente des capacités de flux : c'est-à-dire que ces objets peuvent être lus ou recevoir des écritures de manière linéaire, et dispose aussi de moyen d'accéder à des positions arbitraires dans le flux.
Un gestionnaire (littéralement, wrapper en anglais), est une fonction qui indique comment le flux se comporte spécifiquement. C'est le cas du gestionnaire http, qui sait comment traduire une URL en une requête HTTP/1.0 sur un serveur distant. Il existe de nombreux gestionnaires intégrés à PHP par défaut (voir Liste des protocoles et des gestionnaires supportés), et, de plus, des gestionnaires spécifiques peuvent être ajoutés dans les scripts PHP avec la fonction stream_register_wrapper(), ou bien directement par une autre extension, en utilisant l'API C de Working with streams. Grâce à la souplesse des gestionnaires qui peuvent être ajoutés à PHP, il n'y a pas de limites aux possibilités offertes. Pour connaître la liste des gestionnaires actuellement enregistrés, utilisez la fonction stream_get_wrappers().
Un flux est référencé comme :
scheme
://target
scheme
(chaîne de caractères) -
Le nom du gestionnaire a utiliser. Par exemple, file,
http, https,
ftp, ftps, compress.zlib,
compress.bz. et php..
Voir Liste des protocoles et des gestionnaires supportés
pour une liste complète des gestionnaires enregistrés de PHP.
Si aucun gestionnaire n'est spécifié, la fonction par défaut est utilisée (typiquement,
file://).
target
-
Dépend du gestionnaire utilisé. Pour les flux relatifs aux systèmes
de fichiers, c'est typiquement un chemin et un nom de fichier du
fichier désiré. Pour les flux relatifs aux réseaux, c'est
typiquement le nom d'hôte, souvent avec un chemin apposé.
Voir aussi Liste des protocoles et des gestionnaires supportés
pour une description des cibles des flux intégrés.
Note:
Des informations sur l'utilisation des flux dans le code source de PHP peuvent être trouvées dans l'API des flux pour les auteurs d'extensions PHP.