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.
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.