Oi pessoal! Após criarmos uma classe Titular
e refatorarmos o código, passei a receber um erro toda vez que tento instanciar uma nova conta:
Fatal error: Uncaught Error: Object of class Titular could not be converted to string in C:\Users\Rodrigo\Desktop\php-oo\projeto\src\Conta.php:11
Stack trace:
#0 C:\Users\Rodrigo\Desktop\php-oo\projeto\banco.php(6): Conta->__construct(Object(Titular))
#1 {main}
thrown in C:\Users\Rodrigo\Desktop\php-oo\projeto\src\Conta.php on line 11
PHP Fatal error: Uncaught Error: Object of class Titular could not be converted to string in C:\Users\Rodrigo\Desktop\php-oo\projeto\src\Conta.php:11
Stack trace:
#0 C:\Users\Rodrigo\Desktop\php-oo\projeto\banco.php(6): Conta->__construct(Object(Titular))
#1 {main}
thrown in C:\Users\Rodrigo\Desktop\php-oo\projeto\src\Conta.php on line 11
Não consigo encontrar o ponto do código em que esse erro é gerado, já que não estou pedindo que a aplicação transforme o objeto Titular
em string em nenhum momento. Segue a definição 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;
}
//...métodos de acesso e validação
E da classe Conta
:
class Conta
{
private $titular;
private $saldo;
private static $numeroDeContas = 0;
public function __construct(Titular $titular)
{
$this->$titular = $titular;
$this->saldo = 0;
self::$numeroDeContas++;
}
//...métodos de acesso
Aqui a chamada que está gerando o erro:
require_once 'src/Conta.php';
require_once 'src/Titular.php';
$primeiraConta = new Conta(new Titular('123.456.789-10', 'Vinicius Dias'));
//...código quebra nesse ponto... //
$primeiraConta->deposita(500);
$primeiraConta->saca(300); // isso é ok
echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaCpfTitular() . PHP_EOL;
echo $primeiraConta->recuperaSaldo() . PHP_EOL;
Estou usando o PHP 7.4. Já tentei explicitar o tipo de $titular
na classe Conta
, sem sucesso. Podem me ajudar?