Manual do PHP
Anterior | Capítulo 63. Autores da Extensão do PHP, a API de Fluxos (Streams) | Próxima

# Basico de Fluxos de Dados

Usar fluxos de dados é muito parecido com usar a funções da stdio ANSI. A diferença principal é como você obtem um handle de fluxo para começar. Na maioria dos casos, você usará php_stream_open_wrapper() para obter esse handle. Essa função funciona de forma análoga à fopen, como pode ser visto no exemplo abaixo:

Exemplo 63-1. Exemplo simples de fluxo de dados que mostra a página do PHP
    php_stream * stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);
    if (stream) {
        while(!php_stream_eof(stream)) {
            char buf[1024];

            if (php_stream_gets(stream, buf, sizeof(buf))) {
                printf(buf);
            } else {
                break;
            }
        }
        php_stream_close(stream);
    }

A tabela abaixo mostra os fluxos equivalentes para as funções mais comuns da stdio ANSI. A não ser que esteja comentado o contrário, as semânticas das funções são idênticas.

Tabela 63-1. Funções equivalentes à stdio ANSI na API de Fluxos de Dados

Função stdio ANSI | Função de Fluxo de Dados do PHP | Comentário
--- | --- | ---
fopen | php_stream_open_wrapper | A API inclui parâmetros adicionais
fclose | php_stream_close |
fgets | php_stream_gets |
fread | php_stream_read | O parâmetro nmemb tem o valor de 1, então o protótipo parece mais com read(2)
fwrite | php_stream_write | O parâmetro nmemb tem o valor de 1, então o protótipo parece mais com write(2)
fseek | php_stream_seek |
ftell | php_stream_tell |
rewind | php_stream_rewind |
feof | php_stream_eof |
fgetc | php_stream_getc |
fputc | php_stream_putc |
fflush | php_stream_flush |
puts | php_stream_puts | Mesma semântica de puts, NÂO de fputs
fstat | php_stream_stat | A API tem uma estrutura stat mais rica

Anterior | Principal | Próxima
Autores da Extensão do PHP, a API de Fluxos (Streams) | Acima | Fluxos como Recursos