Ótima pergunta, Karolina. O while executa o código dentro do bloco enquanto a condição entre parêntesis for algo que possa ser interpretado como verdadeiro. Isso pode ser um booleano true
mesmo ou qualquer outra coisa que quando convertido para booleano dê verdadeiro.
Quando executamos $arquivo = $diretorioAtual->read()
o método read
retorna pra gente o nome do próximo arquivo no diretório ou false
caso não haja mais arquivos, por exemplo.
Além disso, a expressão $arquivo = $diretorioAtual->read()
após atribuir o valor à variável $arquivo
retorna esse valor também. Isso que possibilita coisas como $mesmoArquivoMasEmOutraVariavel = $arquivo = $diretorioAtual->read()
, entende?
Sendo assim, como o valor de $arquivo
é retornado, ele é avaliado pelo while
e quando ele se torna false
a gente sai do loop. :-)
Essa é uma explicação relativamente complexa embora o conceito se torne simples conforme a gente se habitue, então se não tiver ficado claro, só dizer.