Los flujos fueron introducidos en PHP 4.3.0 como una manera de generalizar operaciones con ficheros, redes, compresión de datos, y otras operaciones que comparten un conjunto común de funciones y usos. En su definición más simple, un flujo es un objeto de tipo resource que exhibe un comportamiento similar al de un flujo. Esto es, puede ser leído o escrito de una manera lineal, y puede usar la función fseek() para buscar posiciones arbitrarias dentro del flujo.
Una envoltura es un código adicional que le indica al flujo cómo manejar protocolos/codificaciones específicos. Por ejemplo, la envoltura http sabe cómo traducir un URL a una petición HTTP/1.0 para un fichero en un servidor remoto. Existen muchas envolturas incluidas en PHP de manera predeterminada (véase Protocolos y Envolturas soportados), y también se pueden añadir envolturas personalizadas a un script de PHP usando stream_wrapper_register(), o directamente desde una extensión utilizando la Referencia de la API, en la sección Trabajar con flujos. Ya que se puede añadir cualquier clase de envoltura a PHP, no existe un límite establecido sobre lo que se puede hacer con ellas. Para acceder a la lista de las envolturas actualmente registradas, use stream_get_wrappers().
Un flujo está descrito como: esquema
://objetivo
esquema
(string) -
El nombre de la envoltura que se va a usar. Algunos ejemplos incluyen: file,
http, https, ftp, ftps, compress.zlib, compress.bz2, y php. Una lista con las
envolturas incluidas en PHP puede verse en la sección Protocolos y Envolturas soportados. Si
no se especifica una envoltura, se usará la función predeterminada (normalmente
file://).
objetivo
-
Depende de la envoltura usada. Para flujos relacionados con el sistema de ficheros,
nomrmalmente es una ruta y un nombre de fichero. Para flujos relacionados con
redes, normalmente es un nombre de host, a menudo con una ruta añadida al final. Se puede encontrar
una descripción de los objetivos para los flujos incluidos en PHP en la sección Protocolos y Envolturas soportados.
Nota:
Se puede encontrar información sobre el uso de los flujos dentro del código fuente de PHP, en la Referencia de la API de flujos para autores de extensiones de PHP.