2
respostas

O que a chamada "proximo" estará recebendo?

Boa noite!

Utilizando o decorator, nós estamos este código:

foreach($this->proximo($contas) as $c){
    $filtradas[] = $c;
}

O que exatamente a função está retornando? Já que ainda não fizemos a chamada do método filtrar nela.

2 respostas

Oi Matheus, tudo bom?

O método proximo da classe filtro, aplica o filtro também:

 abstract class Filtro {
      protected $outroFiltro;

      function __construct($outroFiltro = null) {
        $this->outroFiltro = $outroFiltro;
      }

      abstract public function filtra($contas);

      protected function proximo($contas) {
// aqui a gente ta devolvendo o valor do método filtra em cima da referencia $outroFiltro
        if(!is_null($this->outroFiltro)) return $outroFiltro->filtra($contas);
        else return Array();
      }
    }

É nessa parte que os filtros se chamam de forma recursiva, aplicando em cadeia e, por consequencia, acumulando os comportamentos =)

Abraço!

Obrigado pela resposta! Mas ainda não entendi o funcionamento. Como este array funciona, para onde é redirecionado?