Boa Tarde,
Na aula 2, Quando vou executar o código de teste da calculadora de descontos, me retorna o seguinte erro:
Fatal error: Uncaught TypeError: Typed property Alura\DesignPattern\Descontos\Desconto::$proximoDesconto must be an instance of Alura\DesignPattern\Descontos\Desconto, null used in /var/www/src/Descontos/Desconto.php:13
Estou usando o PHP 7.4.10, e meu código se encontra assim:
Desconto.php
<?php
namespace Alura\DesignPattern\Descontos;
use Alura\DesignPattern\Orcamento;
abstract class Desconto
{
protected Desconto $proximoDesconto;
public function __construct(?Desconto $proximoDesconto)
{
$this->proximoDesconto = $proximoDesconto;
}
abstract public function calculaDesconto(Orcamento $orcamento);
}
CalculadoraDeDescontos.php
<?php
namespace Alura\DesignPattern;
use Alura\DesignPattern\Orcamento;
use Alura\DesignPattern\Descontos\DescontoMaisDe5Itens;
use Alura\DesignPattern\Descontos\DescontoMaisDe500Reais;
use Alura\DesignPattern\Descontos\SemDesconto;
class CalculadoraDeDescontos
{
public function calcularDesconto(Orcamento $orcamento)
{
$cadeiaDeDescontos = new DescontoMaisDe5Itens(
new DescontoMaisDe500Reais(
new SemDesconto(null)
)
);
return $cadeiaDeDescontos->calculaDesconto($orcamento);
}
}