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

Método indefinido

Estou com um problema no meu arquivo "banco.php", quando eu chamo a função para recuperarCpfTitular(); aparece o erro abaixo.

Error: PHP Fatal error: Uncaught Error: Call to undefined method Conta::recuperarCpfTitular() in C:\Users\thauan.silva\Desktop\Alura\orientacao-a-objetos\banco.php:16 Stack trace:

#0 {main}

Segue abaixo meus arquivos.

Conta.php

<?php

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++;

}

public function sacar(float $valorASacar): void{
    if($valorASacar > $this->saldo){
        echo"Saldo indisponível";
        return;
    }
        $this -> saldo -= $valorASacar;
}

public function depositar(float $valorADepositar): void{
    if($valorADepositar < 0){
        echo "Valor precisa ser positivo";
        return;
    }
        $this -> saldo += $valorADepositar;

}

public function transferir(float $valorATransferir, Conta $contaDestino): void{
    if($valorATransferir > $this->saldo){
        echo "Saldo Indisponível";
        return;
    }
        $this->sacar($valorATransferir);
        $contaDestino->depositar($valorATransferir);
    }

public function recuperarSaldo(): float{
    return $this->saldo;
}

public function recuperarNomeTitular(): string{
    return $this->titular->recuperarNome();        
}

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

}


Titular.php

<?php

class Titular { private Cpf $cpf; private string $nome;

public function __construct(Cpf $cpf, string $nome)
{
    $this->cpf = $cpf;
    $this->validarNomeTitular($nome);
    $this->nome = $nome;
}

public function recuperarCpfTitular(): string
{
    return $this->cpf->recuperarCpf();
}

public function recuperarNome(): string
{
    return $this->nome;
}

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

}


Cpf.php

<?php

class Cpf { private string $cpf;

public function __construct(string $cpf)
{
    $cpf = filter_var($cpf, FILTER_VALIDATE_REGEXP, [
        'options' => [
            'regexp' => '/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}$/'
        ]
    ]);

    if ($cpf === false) {
        echo "Cpf inválido";
        exit();
    }

    $this->cpf = $cpf;
}

public function recuperarCpf(): string
{
    return $this->cpf;
}

}


banco.php

<?php

require_once 'src/Conta.php'; require_once 'src/Titular.php'; require_once 'src/Cpf.php';

$primeiraConta = new Conta(new Titular(new Cpf('123.456.789-10'),'Vinicius Dias')); $primeiraConta->depositar(500); $primeiraConta->sacar(300);

$segundaConta = new Conta(new Titular(new Cpf('172.037.627-18'),'Thauan')); $segundaConta->depositar(1500); $segundaConta->sacar(500);

echo $primeiraConta->recuperarNomeTitular().PHP_EOL; echo $primeiraConta->recuperarCpfTitular().PHP_EOL; echo $primeiraConta->recuperarSaldo().PHP_EOL;

echo $segundaConta->recuperarNomeTitular().PHP_EOL; echo $segundaConta->recuperarCpfTitular().PHP_EOL; echo $segundaConta->recuperarSaldo().PHP_EOL;

echo Conta::recuperarNumeroDeContas();

1 resposta
solução!

Ja resolvi.