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

Diversos erros no projeto final ao executar o arquivo no terminal

Bom dia,

Já conferi umas 5 x meu projeto com o do professor...ja inverti a ordem de algumas coisas, inclusive ao conferir com o dele notei um pequeno erro que alguem já relatou em algum topico do nome e deixei do jeito corrigido. Alguém tem idéia do que pode estar causando estes erros, abaixo? Irei enviar todos os arquivos....menos o CPF.php pois testei só isto e estava funcionando direitinho.

PHP Notice: Undefined variable: vinicus in D:\Pastas Cristina\Aestudos2022\formacaophp\php_primeiros-passos\projeto\banco.php on line 9

Notice: Undefined variable: vinicus in D:\Pastas Cristina\Aestudos2022\formacaophp\php_primeiros-passos\projeto\banco.php on line 9 PHP Fatal error: Uncaught TypeError: Argument 1 passed to Conta::_construct() must be an instance of Titular, null given, called in D:\Pastas Cristina\Aestudos2022\formacaophp\phpprimeiros-passos\projeto\banco.php on line 9 and defined in D:\Pastas Cristina\Aestudos2022\formacaophp\php_primeiros-passos\projeto\src\Conta.php:9 Stack trace:

#0 D:\Pastas Cristina\Aestudos2022\formacaophp\php_primeiros-passos\projeto\banco.php(9): Conta->__construct(NULL)

#1 {main} thrown in D:\Pastas Cristina\Aestudos2022\formacaophp\php_primeiros-passos\projeto\src\Conta.php on line 9

banco.php


  <?php

require_once 'src/Conta.php';
require_once 'src/Titular.php';
require_once 'src/CPF.php';    //ja coloquei este antes também e continuou com erro...


$vinicius = new Titular(new CPF('123.456.789-10'),'Vinicius Dias');
$primeiraConta = new Conta($vinicus);

$primeiraConta->deposita(500);
$primeiraConta->saca(300);

echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaSaldo() . PHP_EOL;
echo $primeiraConta->recuperaCpfTitular() . PHP_EOL;

$patricia = new Titular(new CPF('987654321-10'), 'Patricia');
$segundaConta = new Conta($patricia);
var_dump($segundaConta);


$juliana = new Titular(new CPF('1234567810'), 'Juliana');
$terceiraConta = new Conta($juliana);


//unset($segundaConta);

echo Conta::recuperaNumeroDeContas();

Titular.php

<?php

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

    public function __construct(CPF $cpf, string $nome)
    {

        $this->cpf = $cpf;
        $this->validaNomeTitular($nome);
        $this->nome = $nome;
    }

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

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

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



} 

Conta.php

<?php

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

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

    public function __destruct()
    {
        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 function recuperaNomeTitular(): string 
    {
        return $this->titular->recuperaNome();
    } 

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


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

}

Obrigada!!!!

1 resposta
solução!

Depois de tanto fuçar... descobri o erro

$vinicius = new Titular(new CPF('123.456.789-10'),'Vinicius Dias');
$primeiraConta = new Conta($vinicus);

tava vinicus em vez de vinicius na hora de criar a conta....faltou um i

vou deixar aqui...caso alguem tenha um erro similar por causa de um detalhe.... apesar de eu usar o autocompletar, as vezes esqueço de usar