Capítulo 63. Autores da Extensão do PHP, a API de Fluxos (Streams)

Índice
Overview
Basico de Fluxos de Dados
Fluxos como Recursos
Referência da API Comum de Fluxos de Dados (Streams)
Referência da API de Fluxos de Dados (Streams) para Diretórios
Referência da API para Fluxo de Dados (Streams) para Arquivos
Referência da API de Fluxos de Dados (Streams) para Sockets
Estrutura (Structures) da API de Fluxos de Dados (Streams)
Constantes de Fluxos de Dados

Overview

A API de Fluxos de Dados do PHP introduz uma maneira unificada de lidar com arquivos e sockets em extensões do PHP. Usando uma API única, com funções padrões para operações comuns, a API de fluxos permite que sua extensão acesse arquivos, sockets, URLs, memória e objetos definidos pelo script. Essa API é extensível em tempo de execução que permite carregar dinâmicamente módulos (e scripts!) para registrar novos fluxos.

O objetivo da API de fluxos é tornar confortável para os desenvolvedores abrir arquivos, URLs e outras fontes de dados com uma API unificada que é fácil de compreender. A API é mais ou menos baseada na família de funções da biblioteca ANSI C stdio (com semântica idêntica para a maioria das principais funções), então programadores C terão um sentimento de familiaridade com fluxos.

A API de fluxos opera em alguns níveis diferentes: no nível base, a API define objetos php_stream pare representar fontes de dados streamable. Em um nível um pouco acima, o API define objetos php_stream_wrapper que fazem um "wrap" no nível mais baixo da API para prover suporte para pegar dados e meta-dados de URLs. Um parâmetro context adicional, aceito para a maioria das funções de criação de fluxos, é passada para o método stream_opener do wrapper para afinar o comportamento do mesmo.

Qualquer fluxo, uma vez aberto, também pode ter um número qualquer de filters (filtros) aplicados ao mesmo, que processa os dados enquanto lê do/escreve no fluxo.

Fluxos podem ser convertidos em outros tipos de file-handles, para que eles possam ser usados por bibliotecas de terceiros sem muito trabalho. Isso permite que essas bibliotecas acessem dados diretamente de fontes URL. Se seu sistema tem as funções fopencookie() ou funopen() , você pode até passar qualquer fluxo PHP para qualquer biblioteca que use a stdio ANSI!

Nota: As funções nesse capítulo são para uso no código-fonte do PHP e não são funções PHP. Funções de fluxo para usuários podem ser encontrados na Referência de Fluxos de Dados.