Boa noite! Não entendo o porque o atributo saldo não aparece na tela, está referenciado com NULL???
index.php
<?php
header('Content-Type: text/html; charset=utf-8');
ini_set('display_errors', 1);//mostrar todos os error do projeto
error_reporting(E_ALL);
header('Content-Type: text/html; charset=utf-8');
require "ContaCorrente.php";
$contaJoao = new ContaCorrente("Joao", "7678", "78654-0", 9000.00);
$contaMaria = new ContaCorrente("Maria", "7678", "785645-0", 20000.00);//A classe é populada dentro dos parâmetros por causa do construct
var_dump($contaJoao); ?><br /><?php
var_dump($contaMaria);
<?php
class ContaCorrente{
private $titular;
private $agencia;
private $numero;
private $saldo;
public $ultimaOperacao;
public function __construct($agencia, $numero){//esta função garante que a cada nova conta criada sejam passados os atributos
$this->agencia = $agencia;
$this->numero = $numero;
//a variável this permite que seja acessada os atributos da classe
}
public function sacar($valor){
$this->saldo = $this->saldo - $valor;
return $this;//o retorno permite passar só uma linha de cód sem precisar chamar a função
}
public function depositar($valor){
$this->saldo = $this->saldo + $valor;
return $this;
}
public function transferir($valor, $conta){
$this->sacar($valor);
$conta->depositar($valor);
return $this;
}
public function __get($atributo){//Esta função permite que todos os atributos sejam acessados por outra classe, se tentarmos ler o valor, o método __get() será invocado automaticamente pela classe
$this->protegerAtributo($atributo);
return $this->$atributo;
}
public function __set($atributo, $valor){//Esta função permite modificar todos os atributos declarados como privados, se tentarmos alterar o valor de um atributo, o método __set será chamado.
$this->protegerAtributo($atributo);
return $this->$atributo = $valor;
}
private function protegerAtributo($atributo){
if ($atributo == "titular" || $atributo == "saldo") {//não permite alterar os atributos
throw new Exception("Este atributo $atributo continua privado.");
}
}
public function setNumero($numero){//Esta função modificará o atributo após ser o acesso ser privado
return $this->numero = $numero;
}
private function formatarSaldo(){//Formata os dados do saldo
return "R$".number_format($this->saldo,2,",",".");
}
public function getSaldo(){//Para que possa permitir que o saldo seja acessado na tela
return $this->formatarSaldo();
}
}