Estou enfrentando um problema com o exercício. Estou implementando a interface Imposto na classe ICMS como no exemplo do vídeo, porém ainda estou tendo o erro:
Fatal error: Uncaught TypeError: Argument 2 passed to CalculadorDeImposto::calcula() must implement interface Imposto, instance of ICMS given.
Sabem me dizer por que o erro acontece mesmo tendo implementado a interface Imposto na classe ICMS?
index.php
require "Orcamento.php";
require "CalculadorDeImposto.php";
require "Imposto.php";
require "ICMS.php";
require "ISS.php";
$Orcamento = new Orcamento(100);
$CalculadorDeImposto = new CalculadorDeImposto();
echo $CalculadorDeImposto->calcula($Orcamento, new ICMS());
Classe CalculadorDeImposto:
class CalculadorDeImposto {
public function calcula(Orcamento $Orcamento, Imposto $Imposto) {
return $Imposto->calcula($Orcamento);
}
}
Classe ICMS:
class ICMS implements Imposto{
public function calcula(Orcamento $Orcamento) {
return ($Orcamento->getValorOrcamento() * 0.05) + 50;
}
}
Classe ISS:
class ISS implements Imposto {
public function calcula(Orcamento $Orcamento) {
return $Orcamento->getValorOrcamento() * 0.06;
}
}
Interface Imposto:
interface Imposto {
public function calcula(Orcamento $Orcamento);
}