Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!

Compartilhar este post


Link para o post
Compartilhar em outros 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);
    }

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      No código abaixo, funciona perfeitamente quando chamo: dominio.com.br/noticia/todas
       
      <?php
          $url = (isset($_GET['url'])) ? $_GET['url'] : 'principal';
          $url = array_filter(explode('/', $url));
          //var_dump($url);
          $file = $url[0] . '.php';
          if (is_file($file)) {
              include $file;
          } else {
              include '404.php';
          }
          ?>
       
      Porém, quero usar variáveis com ? e &, tipo: dominio.com.br/busca/?campo=assunto
       
      Como faço pra conseguir isso?
       
      Valeu!!!
    • Por ILR master
      Fala pessoal, tudo na boa?
      Eu uso o wamp para desenvolver e testas meu site antes de jogar no servidor.
      A dúvida é o seguinte:
       
      No servidor, eu consigo ler as variáveis numa boa, mas no localhost não. Meu código no index está assim:
       
      $atual = (isset($_GET['pg'])) ? $_GET['pg'] : 'principal';
      $permissao = array('principal','contribua','quem-somos','politica-de-privacidade','termos-de-uso','evento','busca','galeria','galerias','clickbanner','noticia','noticias','contato','video');
      if(substr_count($atual, '/') > 0){
          $atual = explode('/', $atual);
          $pagina = (file_exists($atual[0]. '.php') && in_array($atual[0], $permissao)) ? $atual[0] : 'erro';
          $pg1 = $atual[1];
          $pg2 = $atual[2];
          $pg3 = $atual[3];
          $urltitulo = $atual[3];
      }else{
          $pagina = (file_exists($atual. '.php') && in_array($atual, $permissao)) ? $atual : 'erro';
          $codigo =0;
      };
       
      No servidor, quando chamo: dominio.com.br/pagina/variavel
      ele já identifica as variáveis  $pg1 = $atual[1]; e $pg2 = $atual[2];
      print $pg1 = pagina
      print $pg2 = variavel
      Ele me tras os resultados 

      No localhost não. Ele não reconhece as variáveis

      Alguém sabe como arrumo isso no wamp?
       
      At,
    • Por 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.
    • Por 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.
    • Por 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.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.