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

[Bug] Fatal error: Uncaught Error: Object of class Titular could not be converted to string

Já tentei de tudo mas esse erro ainda persiste, alguém pode me ajudar?

Error

<?php

// Esse código é da classe Conta.php

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

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

    public function saca(float $valorASacar): void
    {
        if ($valorASacar > $this->saldo) {
            echo "Saldo indisponível";
            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;
    }
}
<?php

// Esse é o código da classe Titular

class Titular
{
    private $cpf;
    private $nome;

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

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

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

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

}

// Esse é o código da classe banco.php

<?php

require_once 'Conta.php';
require_once 'Titular.php';

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

$outraConta = new Conta(new Titular('123', 'Abcdefg'));
var_dump($outraConta);
echo Conta::recuperaNumeroDeContas();
1 resposta
solução!

Olá, André, tudo bem?

No construtor da sua classe Conta você adicionou . invés de ; no final da instrução, veja:

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

Acredito que se você adicionar o ; irá funcionar:

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

Espero ter ajudado, bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓