1
resposta

Erro na saída do programa

Código da classe MeuFiltro

class MeuFiltro extends php_user_filter
{
    public $stream;

    public function onCreate()
    {
        $this->stream = fopen('php://temp', 'w+');
        return $this->stream !== false;
    }

    public function filter($in, $out, &$consumed, $closing)
    {
        $saida = '';

        while($bucket = stream_bucket_make_writeable($in)){
            $linhas = explode('\n', $bucket->data);

            foreach ($linhas as $linha){
                if(stripos($linha, 'parte') !== false){
                    $saida .= $linha . "\n";
                } // fim do if
            } // fim do foreach
        } // fim do loop while

        $bucketSaida = stream_bucket_new($this->stream, $saida);
        stream_bucket_make_writeable($out, $bucketSaida);

        return PSFS_PASS_ON;

    } // fim da função filter

}

Código do arquivo

require_once 'MeuFiltro.php';

$arquivoCursos = fopen('lista-cursos.txt', 'r');

stream_filter_register('consulta.partes', MeuFiltro::class);
stream_filter_append($arquivoCursos, 'consulta.partes');

echo fread($arquivoCursos, filesize('lista-cursos.txt'));

fclose($arquivoCursos);

Saída do terminal

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Os avisos são porque faltou declarar o tipo de retorno do método filter (que é int) e do onCreate (que é bool).

O erro é porque aparentemente filesize retornou 0. O caminho do arquivo está certo e ele possui algum conteúdo?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software