Já tentei de tudo. Já baixei o projeto no tópico 1 do capítulo 6 para poder comparar e não encontro o erro mesmo copiando e colando.
No meu projeto ao invés de usar Alura/Banco eu uso o meu nome sem acento Andre/Banco nos namespaces.
Mesmo copiando e colando o código nas classes Pessoa e Titular sempre dá erro. Estou usando no VScode.
// Arquivo autoload.php
// H:\Documentos\Portifolio\PHP\POO\Codigo\autoload.php
<?php
spl_autoload_register(function (string $nomeCompletoDaClasse) {
$caminhoArquivo = str_replace('Andre\\Banco', 'src', $nomeCompletoDaClasse);
$caminhoArquivo = str_replace('\\', DIRECTORY_SEPARATOR, $caminhoArquivo);
$caminhoArquivo .= '.php';
if (file_exists($caminhoArquivo)) {
require_once $caminhoArquivo;
}
});
// Arquivo banco.php
// H:\Documentos\Portifolio\PHP\POO\Codigo\banco.php
<?php
require_once 'autoload.php';
// require_once 'src/Modelo/Conta/Titular.php';
// require_once 'src/Modelo/Pessoa.php';
use Andre\Banco\Modelo\Conta\Titular;
use Andre\Banco\Modelo\Endereco;
use Andre\Banco\Modelo\CPF;
use Andre\Banco\Modelo\Pessoa;
use Andre\Banco\Modelo\Conta\Conta;
$eu = new Titular(new CPF('066.942.234-10'), 'André', new Endereco("","","",""));
$eu->recuperaCpf();
// Arquivo Titular.php
// H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Conta\Titular.php
<?php
namespace Andre\Banco\Modelo\Conta;
use Andre\Banco\Modelo\Pessoa;
use Andre\Banco\Modelo\CPF;
use Andre\Banco\Modelo\Endereco;
class Titular extends Pessoa
{
private $endereco;
public function __construct(CPF $cpf, string $nome, Endereco $endereco)
{
parent::__construct($nome, $cpf);
$this->endereco = $endereco;
}
public function recuperaEndereco(): Endereco
{
return $this->endereco;
}
public function podeAutenticar(string $senha): bool
{
return $senha === 'abcd';
}
}
// Arquivo Pessoa.php
// H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Pessoa.php
<?php
namespace Andre\Banco\Modelo;
abstract class Pessoa
{
protected $nome;
private $cpf;
public function __construct(string $nome, CPF $cpf)
{
$this->validaNomeTitular($nome);
$this->nome = $nome;
$this->cpf = $cpf;
}
public function recuperaNome(): string
{
return $this->nome;
}
public function recuperaCpf(): string
{
return $this->cpf->recuperaNumero();
}
protected function validaNomeTitular(string $nomeTitular)
{
if (strlen($nomeTitular) < 5) {
echo "Nome precisa ter pelo menos 5 caracteres";
exit();
}
}
}
// ERRO AO EXECUTAR O ARQUIVO banco.php:
PHP Fatal error: Uncaught Error: Class "Andre\Banco\Modelo\Pessoa" not found in H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Conta\Titular.php:9
Stack trace:
#0 H:\Documentos\Portifolio\PHP\POO\Codigo\banco.php(4): require_once()
#1 {main}
thrown in H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Conta\Titular.php on line 9
Fatal error: Uncaught Error: Class "Andre\Banco\Modelo\Pessoa" not found in H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Conta\Titular.php:9
Stack trace:
#0 H:\Documentos\Portifolio\PHP\POO\Codigo\banco.php(4): require_once()
#1 {main}
thrown in H:\Documentos\Portifolio\PHP\POO\Codigo\src\Modelo\Conta\Titular.php on line 9