Olá, eu estou quebrando a cabeça com esse problema que acredito que seja algum detalhe faltando.
quando eu tento rodar o gerar-pedido.php ele me retorna esse erro
o php storm encontra a classe se eu clicar nela no construct do orçamento, então creio que seja algo no php. Alguém pode me dar uma luz?
segue código.
EDIT: Não faço ideia o que tinha errado, mais eu renomeei a pasta EstadosOrcamento e depois voltei pro original e aí funcionou.
Obrigado.
PHP Fatal error: Uncaught Error: Class 'Alura\DesignPattern\EstadosOrcamento\EmAprovacao' not found in /home/cesar/Documents/Alura/FormacaoArquitetoPHP/DesignPattersPadroesComportamentais/src/Orcamento.php:17
Stack trace:
#0 /home/cesar/Documents/Alura/FormacaoArquitetoPHP/DesignPattersPadroesComportamentais/gera-pedido.php(13): Alura\DesignPattern\Orcamento->__construct()
#1 {main}
thrown in /home/cesar/Documents/Alura/FormacaoArquitetoPHP/DesignPattersPadroesComportamentais/src/Orcamento.php on line 17
<?php
namespace Alura\DesignPattern;
use Alura\DesignPattern\EstadosOrcamento\EmAprovacao;
use Alura\DesignPattern\EstadosOrcamento\EstadoOrcamento;
class Orcamento
{
public int $quantidadeDeItens;
public float $valor;
public EstadoOrcamento $estadoAtual;
public function __construct()
{
$this->estadoAtual = new EmAprovacao();
}
public function aplicaDescontoExtra()
{
$this->valor -= $this->estadoAtual->calculaDescontoExtra($this);
}
public function aprova()
{
$this->estadoAtual->aprova($this);
}
public function reprova()
{
$this->estadoAtual->reprova($this);
}
public function finaliza()
{
$this->estadoAtual->finaliza($this);
}
}
<?php
namespace Alura\DesignPattern\EstadosOrcamento;
use Alura\DesignPattern\Orcamento;
class EmAprovacao extends EstadoOrcamento
{
public function calculaDescontoExtra(Orcamento $orcamento): float
{
return $orcamento->valor * 0.05;
}
public function aprova(Orcamento $orcamento)
{
$orcamento->estadoAtual = new Aprovado();
}
public function reprova(Orcamento $orcamento)
{
$orcamento->estadoAtual = new Reprovado();
}
}
"autoload": {
"psr-4": {
"Alura\\DesignPattern\\": "src/"
}
}