Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida na implementação do filtro

Vinicius, tu pode explicar as condições de "IF" que tu utilizou em uma implementação tua que tu disponibilizou no github?

https://github.com/CViniciusSDias/curso-streams/blob/master/MeuFiltro.php

No caso explicar o motivos da implementação dos "if", o que significa essas condições? como elas funcionam.

1 resposta
solução!

Opa, Victor.

Posso sim, man. Vamos lá:

if (!empty($this->previousData)) {

Eu to verificando se tem dados guardados de pedaços anteriores desse stream pra eu continuar utilizando.

if ($stringFromBucket[-1] !== "\n") {

Aqui eu verifico se o último caractere é uma quebra de linha. Se sim, eu sei que esse chunk é válido e eu posso tratar ele. Senão, quer dizer que cortou algum curso no meio, entende? Por isso eu retorno PSFS_FEED_ME que é uma constante informando ao PHP que esse filtro precisa de mais dados para ser realizado.

A utilização de filtro de streams só é recomendada quando o fluxo realmente for contínuo (não houver necessidade de pegar uma linha inteira) e quando a necessidade de poupar memória é grande. A complexidade de um filtro raramente compensa suas vantagens.

Se você precisa pegar linha a linha e quer poupar memória, Generators são uma opção melhor: https://cursos.alura.com.br/generators-em-php-c65

Se os dados do stream não estão consumindo muitos recursos, filtrar os dados direto na aplicação, sem o filtro de stream, pode trazer um código bem mais legível.