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

Erro ->Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in C:\poo\src\Conta.php on line 72

boa noite Meu código esta dando esse erro quando tento roda-lo no cmd

<?php

require 'Titular.php';

class Conta 
{
    private $titular; //atributos ou dados.
    private float $saldo;
    private static $numeroDeContas = 0;

    public function __construct($titular)//metodos ou ações
    {
        $this ->titular = $titular;      // $this referencia o objeto q chama a função
        $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->transferir($valorATransferir);
    }


// Métodos Recuperar.
    public function recuperarSaldo(): float
    {
        return $this->saldo;
    }

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

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

//... código omitido

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

}
<?php

require 'Conta.php';

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

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

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

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

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

~

<?php

require 'Conta.php';
require 'Titular.php';

$primeiraConta = new conta(new titular('123.456.789-10','Thiago Felipe'));
$segundaConta = new conta(new titular('987.456.123-01', 'Aline Torres'));
var_dump($primeiraConta);
var_dump($segundaConta);

$primeiraConta -> depositar(1000);
$segundaConta -> depositar (3500);


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

echo $segundaConta -> recuperarSaldo() . PHP_EOL;
echo $segundaConta -> recuperarNomeTitular() . PHP_EOL;
echo $segundaConta -> recuperarCpfTitular() . PHP_EOL;
1 resposta
solução!

Teria ajudado bastante se você tivesse mostrado qual é a linha 72 da Conta. rsrsrs

Por que você define as classes com letra maiúscula mas a usa com letra minúscula?

De qualquer forma, testei seu código e não recebi nenhum erro: https://3v4l.org/OuaDT

Provavelmente está na parte omitida. ;-)

Ah, olhando aqui de novo: Em Conta.php você inclui Titular.php, e em Titular.php você inclui Conta.php. Isso vai ficar incluindo arquivos pra sempre. Remova os 2 e faça a inclusão somente onde você for usar. ;-)

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