Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas com namespace

Estou com problemas na parte onde ele referencia as pastas usando o comando namespace, as minhas classes Conta e Titular estão dentro de Modelo\Conta. Usei o namespace Modelo\Conta tanto pra minha classe Conta quanto para Titular porém me apresenta um erro. Estou usando o VScode pra fazer o treinamento porém parei nesta parte caso puderem ajudar agradeço.

Classe Titular:

<?php

namespace Alura\Banco\Modelo\Conta;

class Titular extends Pessoa
{
    private $endereco;

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

    public function validaNomeTitular(string $nomeTitular)
    {
        if (strlen($nomeTitular) < 5) {
            echo "Nome precisa ter pelo menos 5 caracteres";
            exit();
        }
    }

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

}

Classe Conta:

namespace Alura\Banco\Modelo\Conta;

class Conta
{
    //Atributos
    private Titular $titular;
    private float $saldo;
    private static $numeroDeContas = 0;



    public function __construct(Titular $titular)
    {
        $this->titular = $titular;
        $this->saldo = 0;
        self::$numeroDeContas++;
    }

    public function __destruct()
    {
        self::$numeroDeContas--;
    }


    public function saca(float $valorASacar): void
    {
        if ($valorASacar > $this->saldo) {

            //this é a referencia para o objeto que chamou o metodo

            echo "saldo indidponivel";

            return;
        }

        $this->saldo -= $valorASacar;
    }

    public function deposita(float $valorADepositar): void
    {
        if ($valorADepositar < 0) {

            echo "Valor precisa ser positivo";

            return;
        }

        $this->saldo += $valorADepositar;
    }

    public function transfere(float $valorATransferir, Conta $contaDestino): void

    {
        if ($valorATransferir > $this->saldo) {
            echo "Saldo indisponível";
            return;
        }

        $this->saca($valorATransferir);
        $contaDestino->deposita($valorATransferir);
    }

    public function recuperaSaldo(): float

    {
        return $this->saldo;
    }


    public static function recuperaNumeroDeContas(): int
    {
        return self::$numeroDeContas;
    }

    public function recuperaNomeTitular(): string
    {
        return $this->titular->recuperaNome();
    }

    public function recuperaCpfTitular(): string
    {
        return $this->titular->recuperaCpf();
    }
}

Erro: Undefined type Cannot use 'parent' in a class with no parent.

1 resposta
solução!

O problema foi resolvido na aula seguinte; Utilizando os namespaces (https://cursos.alura.com.br/course/php-oo-heranca-polimorfirmo-interfaces/task/66020)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software