1
resposta

No pattern Strategy, o primeiro ELO da cadeia teve que encapsular em variavel para dar return

1) duvida. Náo deu para retornar a clase generica CalculaDesconto diretamente o return como aparece no video do curso. Em lugar disso teve que criar a variavel $ValorDesconto e retornar a variavel e gostaria de entender porque, visto que o valor contido em $this->ProximoDesconto->Desconto($Orcamento); seria o mesmo. retornando direto a conta somente servia para o primeiro elo, (na primeira condicao de desconto) caso contrario, quando avalia as seguintes condicoes retornava sempre null. 2)duvida. Acho muito chato PHP para debugar, tem alguma ferramenta que me faca poupar tempo para encontrar erros? fico sempre debugando na logica usando var_dump, rastreando... muito chato isso.

private $ValorDesconto;

                public function Desconto(Orcamento $Orcamento){


                //private $ProximoDesconto;
                if ($Orcamento->getValor() > 500 and $Orcamento->getValor()<= 1000){
                $ValorDesconto= $Orcamento->getValor() * 0.05;}
                else{$ValorDesconto= $this->ProximoDesconto->Desconto($Orcamento);}
1 resposta

Oi Gustavo, tudo bom?

Você também pode retornar direto o valor. Algo como:

if ($Orcamento->getValor() > 500 and $Orcamento->getValor()<= 1000){
                return $Orcamento->getValor() * 0.05;}
                else{
                  return $this->ProximoDesconto->Desconto($Orcamento);
}

Desde que exite a lógica para chamar o proximo da cadeia, o pattern está certo =)

Nesse caso,a cadeia retorna um valor mesmo. Se você compartilhar comigo o video, podemos discutir melhor essa implementação.

Quanto ao debbug, no PHP você tem o X debug. A ferramenta é bem famosa =)

Qualquer problema, compartilha aqui com a gente!

Abraço.