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.