Los flujos ("streams" en inglés) son un método de
generalización de los ficheros, sockets,
conexiones de red, datos comprimidos y otras operaciones similares,
que comparten operaciones comunes. En su definición más simple,
un flujo es un recurso que
presenta capacidades de flujo: es decir, que estos objetos pueden
ser leídos o recibir escrituras de manera lineal, y disponen también
de medios para acceder a una posición arbitraria en el flujo.
Un gestor (literalmente,
wrapper en inglés), es una función que indica cómo se comporta el flujo específicamente. Es el caso del gestor
http, que sabe cómo traducir una URL en una
petición HTTP/1.0 a un servidor remoto.
Existen numerosos gestores integrados en PHP
por defecto (ver Protocolos y Envolturas soportados),
y, además, gestores específicos pueden ser añadidos en
los scripts PHP con la función stream_register_wrapper(),
o bien directamente por otra extensión.
Gracias a la flexibilidad de los gestores que pueden ser añadidos a PHP,
no hay límites a las posibilidades ofrecidas. Para conocer la lista
de los gestores actualmente registrados, se puede utilizar la función
stream_get_wrappers().
Un flujo se referencia como:
scheme://target
scheme (string) -
El nombre del gestor a utilizar. Por ejemplo, file,
http, https,
ftp, ftps, compress.zlib,
compress.bz y php.
Ver Protocolos y Envolturas soportados
para una lista completa de los gestores registrados de PHP.
Si ningún gestor es especificado, se utiliza la función por defecto (típicamente,
file://).
target -
Depende del gestor utilizado. Para los flujos relativos a los sistemas
de ficheros, es típicamente una ruta y un nombre de fichero del
fichero deseado. Para los flujos relativos a las redes, es
típicamente el nombre de host, a menudo con una ruta añadida.
Ver también Protocolos y Envolturas soportados
para una descripción de los objetivos de los flujos integrados.