erros: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Titular::__construct() must be of the type string, object given
\banco.php(6): Titular->__construct(Object(Cpf), 'Carlos')
Arquivo de ExecuçaoBanco.php
<?php
require 'src/Conta.php';
require 'src/Titular.php';
require 'src/Cpf.php';
$cpf1 = new Cpf("11111111111");
$carlos = new Titular("Carlos",$cpf1);
$conta1 = new Conta($carlos);
$cpf2 = new Cpf("22222222222");
$patricia = new Titular("patricia",$cpf2);
$conta2 = new Conta($patricia);
echo $conta1->mostrarNome().PHP_EOL;
echo $conta1->mostrarCpf().PHP_EOL;
Classe Conta.php
<?php
class Conta
{
public string $Titular;
private float $saldo = 0;
private static int $numerodeContas = 0;
public function __construct(Titular $titular)
{
$this->titular = $titular;
$this->saldo = 0;
self::$numerodeContas++;
}
public function __destruct()
{
if (self::$numerodeContas > 1) {
echo "Mais de uma conta ativa";
}
Self::$numerodeContas--;
}
public function sacar(float $valorAsacar): void
{
if ($valorAsacar > $this->saldo) {
echo "Você não tem Saldo suficiente pra Sacar";
return;
}
$this->saldo -= $valorAsacar;
}
public function depositar(float $valorAdepositar): void
{
if ($valorAdepositar > 0) {
$this->saldo += $valorAdepositar;
return;
}
echo "Você só pode fazer depósitos de valores positivo";
}
public function trans(float $valorAtransferir, $contaDestino): void
{
if ($valorAtransferir > $this->saldo) {
echo "voce nao tem saldo suficiente pra transferir";
return;
}
$this->saldo -= $valorAtransferir;
$contaDestino->depositar($valorAtransferir);
}
public function saldo(): float
{
return $this->saldo;
}
public function mostrarCpf()
{
return $this->titular->getCpf();
}
public function mostrarNome(): string
{
return $this->titular->getNome();
}
public static function mostrarContas()
{
return Conta::$numerodeContas;
}
}
Classe Titular.php
<?php
class Titular
{
private Cpf $cpf;
private string $nome;
public function __construct(String $nome, Cpf $cpf)
{
$this->validaNome($nome);
$this->nome = $nome;
$this->cpf = $cpf;
}
public function getNome()
{
return $this->nome;
}
private function validaNome(String $nomeTitular)
{
if (strlen($nomeTitular) < 5) {
echo "Seu nome precisa no minimo ter 5 caracteres";
exit();
}
}
public function mostrarTudo()
{
echo "$this->nome" . PHP_EOL;
echo "$this->cpf" . PHP_EOL;
}
}
Classe Cpf.php
<?php
class Cpf
{
private $numero;
public function __construct(String $numero)
{
//$this->validarCpf($cpf);
$this->numero = $numero;
}
public function getCpf()
{
return $this->numero;
}
/*public function validarCpf($cpf) : void
{
if(strlen($cpf)!=11){
echo "Cpf invalido";
exit();
}
}*/
}