1
resposta

Exercico de Pattern "State" nao concordo com a solucao

Olá, na solucao oferecida abaixo no curso , especificamente no capitulo "Pattern State PHP" nao concordo com a solução, inclussive apliquei para testar e o resutado foi o esperado, a toda vez que chamado aplicaDesconto a variavel $descontoAplicado é inicializada como false, por este motivo a solução oferecida continua liberando para aplicar desconto indefinidamente.

Observe que os estados EM APROVAÇÃO e APROVADO dão desconto extra. O problema é que eles permitem com que esse desconto seja dado infinitamente. Faça com que esse desconto só seja aplicado apenas uma vez. Na segunda, uma exceção deve ser lançada.

RESPONDER Opinião do Instrutor

Semelhante ao ítem anterior, ambos os estados implementam EstadoDeUmOrcamento e implementam a regra de negócio específica quando o orçamento está naquele estado.

class EmAprovacao implements EstadoDeUmOrcamento { private $descontoAplicado = false; public function aplicaDescontoExtra(Orcamento $orcamento) { if(!$this->descontoAplicado) { $orcamento->valor -= $orcamento->valor * 0.05; $this->descontoAplicado = true; } else { throw new Exception("Desconto já aplicado!"); } }

1 resposta

Oi Gustavo, mas depois que o desconto é aplicado ele não troca o valor da variável?