3
respostas

Caminho para os arquivos na definição dos 'require_once' e 'use'

Boa noite.

Eu estou tendo dificuldades para referenciar os arquivos no projeto. Já entendi o 'mecanismo' do require_once e do use mas meu exercício dá erro por causa do caminho.

Meu erro:

Fatal error: Uncaught Error: Class 'Alura\Banco\Modelo\Pessoa' not found in /Users/juliobarreto/PhpstormProjects/aluraphp/src/Modelo/Conta/Titular.php:9 Stack trace: #0 /Users/juliobarreto/PhpstormProjects/aluraphp/banco.php(5): require_once() #1 {main} thrown in /Users/juliobarreto/PhpstormProjects/aluraphp/src/Modelo/Conta/Titular.php on line 9
Alguma dica de como encontrar o caminho correto para as classes?

Abaixo o caminho que extraí do PhpStorm:

/Users/juliobarreto/PhpstormProjects/aluraphp/src/Modelo/Pessoa.php

E o caminho para o arquivo banco.php

/Users/juliobarreto/PhpstormProjects/aluraphp/banco.php

Ajuda?

3 respostas

Bom dia, Júlio.

Posta os códigos dos arquivos em questão.

A minha 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;

    public function __construct(CPF $cpf, string $nome, Endereco $endereco)
    {
        parent::__construct($nome, $cpf);
        $this->endereco = $endereco;
    }

    public function recuperaEndereco(): Endereco
    {
        return $this->endereco;
    }
}

O arquivo conta:

<?php

require_once 'src/Modelo/Conta/Conta.php';
require_once 'src/Modelo/Endereco.php';
require_once 'src/Modelo/Conta/Titular.php';
require_once 'src/Modelo/CPF.php';

use Alura\Banco\Modelo\Conta\Conta;
use Alura\Banco\Modelo\Endereco;
use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\CPF;

$endereco = new Endereco('Petrópolis', 'um bairro', 'minha rua', '71B');
$vinicius = new Titular(new CPF('123.456.789-10'), 'Vinicius Dias', $endereco);
$primeiraConta = new Conta($vinicius);
$primeiraConta->deposita(500);
$primeiraConta->saca(300); // isso é ok

echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaCpfTitular() . PHP_EOL;
echo $primeiraConta->recuperaSaldo() . PHP_EOL;

$patricia = new Titular(new CPF('698.549.548-10'), 'Patricia', $endereco);
$segundaConta = new Conta($patricia);
var_dump($segundaConta);

$outroEndereco = new Endereco('A', 'b', 'c', '1D');
$outra = new Conta(new Titular(new CPF('123.654.789-01'), 'Abcdefg', $outroEndereco));
unset($segundaConta);
echo Conta::recuperaNumeroDeContas();

A classe

Dá um require na classe Pessoa em banco.php. No código que você mandou não consta.