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

Aula Encapsulamento de métodos

Boa tarde. Meu código não está compilando como deveria.

ContaCorrente

<?php

class ContaCorrente{
    private $titular;
    private $agencia;
    private $numero;
    private $saldo;

    public function __construct($titular, $agencia, $numero, $saldo){ // metodos magicos começam sempre com dois _ _ . Dessa forma __
        $this->titular = $titular;       
        $this->agencia = $agencia;    
        $this->numero = $numero;    
        $this->saldo = $saldo;   
    }
    public function sacar($valor){
        $this->saldo = $this->saldo - $valor;
        return $this;
    }
    public function depositar($valor){
        $this->saldo = $this->saldo + $valor;
        return $this;
    }

###################################################################################################


    public function __get($atributo){ // atribui todos os gets. Não precisando fazer um para cada
        $this->protegeAtributo($atributo);
        return $this->$atributo;
    }

    public function __set($atributo, $valor){ // atribui todos os gets. Não precisando fazer um para cada
        $this->protegeAtributo($atributo);
        $this->$atributo = $valor;
    }

    private function protegeAtributo($atributo){
        if($atributo == "titular" || $atributo == "saldo"){ // não atribui(modifica) titular e saldo. 
            return false;
         }
    }

}

Index

require "ContaCorrente.php";

$contaThaty = new ContaCorrente("Maria", "1212", "334890-9", 599.00);

$contaJoao = new ContaCorrente("João", "1212", "334890-3", 500.00);

echo $contaJoao->saldo;

Quando rodo o echo, aparece o saldo da conta do joão, o correto não era, não aparecer?

1 resposta
solução!

Ola , você só não consegue modificar ou atribuir um valor ! tipo se você tentar assim : $contaJoao->saldo = 350.00...