Após organizar por namespace, me retorna o seguinte erro
C:\xampp\php\php.exe C:\Users\Rodrigo\PhpstormProjects\poo\src\banco.php
Fatal error: Uncaught Error: Class 'Alura\Banco\Modelo\Pessoa' not found in C:\Users\Rodrigo\PhpstormProjects\poo\src\Modelo\Conta\Titular.php:9 Stack trace:
#0 C:\Users\Rodrigo\PhpstormProjects\poo\src\banco.php(3): require_once()
#1 {main} thrown in C:\Users\Rodrigo\PhpstormProjects\poo\src\Modelo\Conta\Titular.php on line 9 PHP Fatal error: Uncaught Error: Class 'Alura\Banco\Modelo\Pessoa' not found in C:\Users\Rodrigo\PhpstormProjects\poo\src\Modelo\Conta\Titular.php:9 Stack trace:
#0 C:\Users\Rodrigo\PhpstormProjects\poo\src\banco.php(3): require_once()
#1 {main} thrown in C:\Users\Rodrigo\PhpstormProjects\poo\src\Modelo\Conta\Titular.php on line 9
Banco.php
<?php
require_once 'Modelo/Conta/Conta.php';
require_once 'Modelo/Conta/Titular.php';
require_once 'Modelo/Cpf.php';
require_once 'Modelo/Endereco.php';
require_once 'Modelo/Pessoa.php';
use Alura\Banco\Modelo\Endereco;
use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\Conta\Conta;
use Alura\Banco\Modelo\Cpf;
$enderecoRodrigo = new Endereco('São Paulo', 'Aclimação', 'uma rua', '445');
$rodrigo = new Titular('Rodrigo', new Cpf('123.456.789-10'), $enderecoRodrigo);
$contaUm = new Conta($rodrigo);
$contaUm->depositar(500);
$contaUm->sacar(100);
var_dump($contaUm);
$enderecoJulia = new Endereco('São Paulo', 'Aclimação', 'uma rua', '446');
$julia = new Titular('Julia', new Cpf('987.654.321-10'), $enderecoJulia);
$contaDois = new conta($julia);
$contaDois->depositar(500);
$contaDois->transferir(500, $contaUm);
var_dump($contaDois);
$enderecoTeste = new Endereco('a', 'b', 'c', '1d');
$teste = new Titular('Lucas', new Cpf('123.543.643-01'), $enderecoTeste);
$outraConta = new Conta($teste);
unset($outraConta);
// método de acesso para atributos de uma classe
echo Conta::getNumeroDeContas();
Classe titular
<?php
namespace Alura\Banco\Modelo\Conta;
use Alura\Banco\Modelo\Pessoa;
use Alura\Banco\Modelo\Cpf;
use Alura\Banco\Modelo\Endereco;
class Titular extends Pessoa
{
private Endereco $endereco;
public function __construct(string $nome, Cpf $cpf, Endereco $endereco)
{
parent::__construct($nome, $cpf);
$this->endereco = $endereco;
}
public function getEndereco(): Endereco
{
return $this->endereco;
}
}
Classe conta
<?php
namespace Alura\Banco\Modelo\Conta;
class Conta
{
private Titular $titular;
private float $saldo;
private static int $numeroDeContas = 0;
public function __construct(Titular $titular)
{
$this->titular = $titular;
$this->saldo = 0;
self::$numeroDeContas++;
}
//Garbage Collector
public function __destruct()
{
self::$numeroDeContas--;
}
public function sacar(float $valorASacar): void
{
if($valorASacar > $this->saldo){
echo "Saldo insuficiente";
} else {
$this->saldo -= $valorASacar;
}
}
public function depositar(float $valorADepositar): void
{
if($valorADepositar < 0){
echo "Valor precisa ser positivo";
} else {
$this->saldo += $valorADepositar;
}
}
public function transferir(float $valorATransferir, Conta $contaDestino): void
{
if($valorATransferir > $this->saldo){
echo "Saldo insuficiente";
} else {
$this->sacar($valorATransferir);
$contaDestino->depositar($valorATransferir);
}
}
public function getSaldo(): float
{
return $this->saldo;
}
public function getNomeTitular(): string
{
return $this->titular->getNome();
}
//Método de navegação entre classes
public function getCpfTitular(): string
{
return $this->titular->getCpf();
}
public static function getNumeroDeContas(): int
{
return self::$numeroDeContas;
}
}
Classe cpf
<?php
namespace Alura\Banco\Modelo;
class Cpf
{
public string $cpf;
public function __construct(string $cpf)
{
$this->cpf = $cpf;
}
public function getCpf(): string
{
return $this->cpf;
}
}
Classe funcionário
<?php
namespace Alura\Banco\Modelo;
class Funcionario extends Pessoa
{
private string $cargo;
public function __construct(string $nome, Cpf $cpf, string $cargo)
{
parent::__construct($nome, $cpf);
$this->cargo = $cargo;
}
public function getCargo(): string
{
return $this->cargo;
}
}
`
Acabou o limite de texto