Jump to content
fnatan

PHP - Ler atributo da classe

Recommended Posts

Olá galera, novato em PHP aqui.

 

Fiz uma classe e gostaria de ler o valor de uma determinada variável, porém essa variável será alterada por alguns métodos enquanto ela estiver instanciada, mas quando leio o valor dela essas alterações não são visualizadas.

 

segue exemplo:

 

<?php


$test = new classeTeste;

echo "valor inicial de myVar: ".$test->myVar."</br>";
$test->alterar_myVar();
echo "myVar após chamada do método: ".$test->myVar."</br>";

class classeTeste {

    public $myVar = 1000;
    
    public function alterar_myVar(){
    	$myVar = 20000;
    	echo "Valor myVar foi alterado para: ".$myVar." pelo método alterar_myVar</br>";
    }
}


?>

Valeu e Abraço!

Share this post


Link to post
Share on other sites

Acho que só meu exemplo já explica, mas qualquer dúvida é só perguntar.

<?php
$test = new classeTeste;

echo "Valor inicial \"{$test->myVar}\" <br />"; // 1000

$test->alterar_myVar();
echo "myVar após chamada do método: \"{$test->myVar}\" <br />"; // Continua sendo 1000

$test->myVar = 2000;
echo "Atributo público pode ser manipulado diretamente \"{$test->myVar}\" <br />"; // 2000

echo "<hr />";
echo "Valor inicial do atributo myVarB \"{$test->verMyVar()}\" <br />"; // 1000

$test->alterarMyVar();
echo "Valor do atributo myVarB depois de alterado \"{$test->verMyVar()}\" <br />"; // 20000

//$test->myVarB = 2000; /* ERRO Não se pode acessar atributo protegido */

class classeTeste {

    public $myVar = 1000; // Isso aqui é um atributo (público)
    private $myVarB = 1000;

    public function alterar_myVar() {
        $myVar = 20000; // Isso aqui é uma variável e não o atributo
    }
    
    /*
     * Nome de métodos não devem conter _ "underline" só letras minusculas e maiúsculas
     * Isso não é regra e sim boa prática
     */
    public function alterarMyVar() {
        $this->myVarB = 20000;
    }
    
    public function verMyVar() {
        return ($this->myVarB);
    }

}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ILR master
      Fala pessoal.
      Tudo bem?
       
      Tenho o seguinte código que funcionda perfeitamente:
       
      date_default_timezone_set("America/Sao_Paulo");
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+30  day'));
       
      Mas eu quero definir a quantidade de dias pegando o valor que a variável:
       
      date_default_timezone_set("America/Sao_Paulo");
      $tempo = 30;
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+$tempo  day'));
       
      Mas quando declaro com variável não funciona.
      Obrigado pela ajuda.
    • By lezão
      Boa tarde, galera!
      Tudo bem com vcs?
       
      Estou precisando de uma limitador de palavras.
      Tenho um texto de 600 palavras e gostaria de que na pagina principal aparece se, apenas 30 palavras do texto.
      Achei esse codigo na innternet, mas ele não limita palavras, mas sim ele corta as palavras ficando assim:  "Tenho um texto de 600 palav..."
      ?php echo substr("$texto;", 0, 200); ? com uma variavel que limita as palavras ficaria assim: "Tenho um texto de 600 palavras". exibiria essas 6 palavras.
    • By Luiz Henrique
      Olá pessoas,
       
      Tenho uma classe e dentro dela várias chamadas para métodos de acordo com a necessidade em outra classe (para obter dados DB), como são muitas e vou duplicar os arquivos, para ganhar tempo queria colocar o nome da classe em uma variável porém não funciona.
       
      use Class1; class Class2 { public $className = 'Class1'; ... $dados = $this->className::function(); // não funciona } Era para gerar isso:
      $dados = Class1::function();
      Se eu der um echo $this->$className, ele me retorno o nome da Class1 porém para executar um método dentro da Class1 não vai, diz que a classe Class1 não existe!
      Tem alguma forma de funcionar isso?
       
      Obrigado.
    • By k9studio
      Meus amigos tenho essa classe e
      quero passar uns dados vindo de BD
      seria:
      $client_id;
      $pay_url;;
      $secret;
       
       
      namespace Pay;
      class Pay {   
         public function Auth(){
                  $ch = curl_init();
              curl_setopt($ch, CURLOPT_URL, $pay_url);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_POST, 1);
              curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
              //CURLOPT_USERPWD = client_id : Secret
              curl_setopt($ch, CURLOPT_USERPWD, $client_id . ':' . $secret);
              }
          }   
    • By Boca
      Pessoas estou com uma duvida preciso de ajuda
      Tenho alguns campos chamados "horario_0, horario_1, horario_2, horario_3, horario_4, horario_5, horario_6 no meu banco de dados
      estou precisando que ela seja dinâmica dentro de um for
      exemplo:
       
      <?php for ($dia = 0; $dia < 7; $dia++): $resultadoBD->horario_$dia endfor; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.