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

erro ao exibir/bloquear atributos/metodos

Na aula quando o professor pede para bloquear os atributos "titular" e "saldo" o atributo agência também é bloqueado.

contacorrente.php

<?php class contacorrente { private $titular; private $agencia; private $numero; private $saldo;

public function __construct($titular, $agencia, $numero, $saldo)
{
    $this->titular = $titular;
    $this->agencia = $agencia;
    $this->numero = $numero;
    $this->saldo = $saldo;
}

//metodo para sacar
public function sacar($valor){
    $this->saldo = $this->saldo - $valor;
    return $this;
}
//metodo para depositar
public function depositar($valor){
    $this->saldo = $this->saldo + $valor;
    return $this;
}
/*

// formas de liberar para visualizar e alterar individualmente cada atributo
    //liberando para consultar titular
        public function gettitular(){
            return $this->titular;
        }
    //liberando para consultar saldo
        public function getsaldo(){
            return $this->saldo;
        }

        //liberando para alterar o titular
        public function settitular($titular){
        return $this->titular = $titular;
        }
        //liberando para alterar o saldo
        public function setsaldo($saldo){
        return $this->saldo = $saldo;
        }
    */

private function protegeatributo ($atributo){
    if ($atributo == "titular" || $atributo == "saldo") {
        return false;
    }
   }
public function __get($atributo)
{
    $this->protegeatributo($atributo);
    //$this->$atributo;
}

public function __set($atributo, $valor){
    $this->protegeatributo($atributo);
    //$this->$atributo = $valor;
}
    //funçao para formatar o saldo

    public function formatasaldo (){
 return number_format ($this->saldo, 2, ",", ".");

} } index.php

<?php require "contacorrente.php";

$contajoao = new contacorrente("joao","0783", "21867-3","500"); $contamaria = new contacorrente("maria","4831", "71321-3", "1000");

var_dump($contajoao); var_dump($contamaria); //echo $contajoao->saldo;

//$contajoao->sacar("400") ->depositar(770); //$contamaria->depositar("1000") ->sacar(25);

var_dump($contajoao); var_dump($contamaria); echo "antiga agencia maria: {$contamaria->agencia} , saldo antigo da maria: {$contamaria->formatasaldo()}";

$contamaria->agencia = "2734"; $contamaria->saldo = "50000"; echo PHP_EOL . " nova agencia da Maria: $contamaria->agencia , novo saldo a maria: {$contamaria->formatasaldo()}"; Onde pode estar o erro?

exibição no browser

object(contacorrente)#1 (4) { ["titular":"contacorrente":private]=> string(4) "joao" ["agencia":"contacorrente":private]=> string(4) "0783" ["numero":"contacorrente":private]=> string(7) "21867-3" ["saldo":"contacorrente":private]=> string(3) "500" } object(contacorrente)#2 (4) { ["titular":"contacorrente":private]=> string(5) "maria" ["agencia":"contacorrente":private]=> string(4) "4831" ["numero":"contacorrente":private]=> string(7) "71321-3" ["saldo":"contacorrente":private]=> string(4) "1000" } object(contacorrente)#1 (4) { ["titular":"contacorrente":private]=> string(4) "joao" ["agencia":"contacorrente":private]=> string(4) "0783" ["numero":"contacorrente":private]=> string(7) "21867-3" ["saldo":"contacorrente":private]=> string(3) "500" } object(contacorrente)#2 (4) { ["titular":"contacorrente":private]=> string(5) "maria" ["agencia":"contacorrente":private]=> string(4) "4831" ["numero":"contacorrente":private]=> string(7) "71321-3" ["saldo":"contacorrente":private]=> string(4) "1000" } antiga agencia maria: , saldo antigo da maria: 1.000,00 nova agencia da Maria: , novo saldo a maria: 1.000,00

1 resposta
solução!

Boa noite, Marcos! Como vai?

Vi que vc duplicou o tópico! Então para organizar melhor o fórum e centralizar a participação do pessoal em apenas um lugar, irei fechar esse e deixar apenas o outro aberto.

Link do tópico original: https://cursos.alura.com.br/forum/topico-erro-ao-exibir-bloquear-atributos-metodos-93960

Grande abraço e bons estudos, meu aluno!