Visibilidade

A visibilidade de uma propriedade ou método pode ser definida prefixando a declaração com as palavras-chave: 'public','protected' ou 'private'. Itens declarados como public podem ser acessados por todo mundo. Protected limita o acesso a classes herdadas (e para a classe que define o item). Private limita a visibilidade para apenas a classe que define o item.

Visibilidade dos membros

Membros de uma classe devem ser definidos com public, private, ou protected.

Exemplo 19-7. Declaração de Membros

<?php

class MinhaClasse {
   
public    $public     = "MinhaClasse::public!\n";
   
protected $protected  = "MinhaClasse::Protected!\n";
   
protected $protected2 = "MinhaClasse::Protected2!\n";
   
private   $private    = "MinhaClasse::private!\n";

   function
imprimaAlo() {
      print
"MinhaClasse::imprimaAlo() " . $this->private;
      print
"MinhaClasse::imprimaAlo() " . $this->protected;
      print
"MinhaClasse::imprimaAlo() " . $this->protected2;
   }
}

class
MinhaClasse2 extends MinhaClasse {
   
protected $protected = "MinhaClasse2::protected!\n";

   function
imprimaAlo() {

      
MinhaClasse::imprimaAlo();    

      print
"MinhaClasse2::imprimaAlo() " . $this->public;
      print
"MinhaClasse2::imprimaAlo() " . $this->protected;
      print
"MinhaClasse2::imprimaAlo() " . $this->protected2;

      
/* Resultará em Erro Fatal: */
      //print "MinhaClasse2::imprimaAlo() " . $this->private; /* Erro Fatal */

   
}
}

$obj = new MinhaClasse();

print
"Principal:: " . $obj->public;
//print $obj->private; /* Erro Fatal */
//print $obj->protected;  /* Erro Fatal */
//print $obj->protected2;  /* Erro Fatal */

$obj->imprimaAlo(); /* Deve imprimir */

$obj2 = new MinhaClasse2();
print
"Principal:: " . $obj2->private; /* Indefinido */

//print $obj2->protected;   /* Erro Fatal */
//print $obj2->protected2;  /* Erro Fatal */

$obj2->imprimaAlo();
?>

Nota: O uso da declaração de variável com a palavra-chave 'var' do PHP 4 não é mais válida para objetos do PHP 5. Para compatibilidade, presumirá-se que uma variável declarada no php tenha visibilidade public, e um aviso E_STRICT será mostrado na tela.

Visibilidade de Métodos

.