Introducción
Los flujos fueron introducidios en PHP 4.3.0 como como una manera de generalizar operaciones con archivos, redes, y compresión de información, entre otras, que comparten un conjunto de funciones y usos. En su definición más simple, un flujo (stream) es un objeto recurso que exhibe un comportamiento similar a un flujo. Es decir, puede ser leído o escrito de una manera lineal, y ser capaz de usar fseek() para buscar posiciones arbitrarias dentro del flujo.
Una envoltura (wrapper) es un códido adicional que le indica al flujo cómo manejar protocolos/codificaciones específicos. Por ejemplo, la envoltura http sabe cómo traducir una URL en una petición HTTP/1.0 de un archivo en un servidor remoto. Hay muchas envolturas incluidas en PHP de manera predeterminada (véase Protocolos y Envolturas soportados), y además se pueden añadir envolturas personalizadas dentro de un script de PHP usando stream_wrapper_register(), o directamente desde una extensión usando la Referencia de la API en Trabajar con flujos. Ya que se puede añadir a PHP cualquier clase de envoltura, no hay 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 es referenciado como: scheme://target
- scheme(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. Véase Protocolos y Envolturas soportados para una lista de envolturas incluidas en PHP. Si no se especifica una envoltura, se usa la función por defecto (normalmente file://).
- target - El objetivo. Depende de la envoltura usada. Para flujos relacionados con sistemas de archivos nomrmalmente es una ruta y un nombre de archivo del archivo deseado. Para flujos relacionados con redes normalmente es un nombre de host, a menudo con una ruta añadida al final. De nuevo, véase Protocolos y Envolturas soportados para una descripción de los objetivos de los flujos internos.
Note:
Se puede encontrar información sobre el uso de flujos dentro del código fuente de PHP en la Referencia de la API de Flujos para Autores de Extensiones de PHP.
