Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Função transferir

Boa noite!

Estou tentando realizar o código para transferir e a principio esta dando um erro de variável não definida na linha 14, só que ao meu ver ela esta correta, gostaria de uma ajuda.

Todo código

<?php

class Conta 
{
    public string $cpfTitular;
    public string $nomeTitular;
    public float $saldo = 0;

    public function sacar(float $valorASacar): void
    {
        if($valorASacar > $this->saldo) {
            echo "Saldo insuficiente";
        } else {
            $saldo -= $valorASacar;
        }
    }

    public function deposito(float $valorADepositar): void
    {
        if ($valorADepositar <= 0){
            echo "não é possível realizar o deposito";
        } else {
            $this->saldo += $valorADepositar;
        }
    }

    public function transferir(float $valorATransferir, Conta $contaDestino): void
    {
        if($valorATransferir > $this->saldo) {
            echo "saldo indisponível";
        } else {
            $this->sacar($valorATransferir);
            $contaDestino->deposito($valorATransferir);
        }
    }
}

Erro no terminal

PS C:\Users\PICHAU\Documents\Programação\treino-orientacao-objeto\src> php -a
Interactive shell

php > require 'Conta.php';
php > $contaUm = new Conta();
php > $contaUm->deposito(500);
php > $contaDois = new Conta();
php > $contaUm->transferir(200, $contaDois);
PHP Notice:  Undefined variable: saldo in C:\Users\PICHAU\Documents\Programação\treino-orientacao-objeto\src\Conta.php on line 14

Notice: Undefined variable: saldo in C:\Users\PICHAU\Documents\Programação\treino-orientacao-objeto\src\Conta.php on line 14
4 respostas

Não seria $this->saldo nesta linha

$saldo -= $valorASacar;

`
solução

Olá, André.

A variável $saldo não existe nesse método. O que existe é a propriedade saldo definida na classe, logo, o correto seria $this->saldo, entende?

Fala, André. Conseguiu entender o problema?

Bom dia!

Desculpa pela demora na resposta. Consegui compreender sim, muito obrigado!