Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
Você
está aqui:Inicio
-> Tutoriais
-> PHP - Controlando a visibilidade de propriedades e métodos
de uma classe
Controlando a visibilidade de
propriedades e métodos de uma classe
O PHP 5 introduziu o conceito de
visibilidade das propriedades e métodos de uma classe.
Este
é o conceito do encapsulamento de dados, ou seja, você
tem classes robustas e bem testadas
que fornecem acesso às suas funcionalidades somente através
de alguns métodos públicos.
Imagine uma classe Impressora capaz de imprimir todos os tipos
de documentos possíveis. É claro que esta classe
terá uma certa quantidade de propriedades e métodos.
Porém, o usuário da classe poderia ter acesso
a apenas alguns métodos públicos, tais como imprimir(),
definirTipo(), etc. As propriedades e métodos que interessam
somente ao funcionamento interno da classe podem ser ocultos
do mundo externo.
Veja a seguinte definição de classe:
class Pessoa{
public $nome;
public function andar(){
echo "Executando o método
andar()";
}
}
Aqui tanto as propriedades e métodos são de acesso
public e podem ser acessados e manipulados
por qualquer trecho de código que esteja usando um objeto
da classe. Experimente agora usar o modificador private.
Este modificador marca um recurso para que este seja acessível
somente à classe a qual ele pertence. Veja:
// definição
da classe Pessoa
class Pessoa{
private $nome;
public function andar(){
echo "Executando o método
andar()";
}
}
Veja o que acontece quando tentamos executar o trecho de código
abaixo:
// cria uma instância
chamada $cliente
$cliente = new Pessoa();
// altera a propriedade nome do objeto
$cliente->nome = "Geraldo Gomes da Silva";
O resultado exibido pelo browser será:
Fatal error: Cannot
access private property Pessoa::$nome in c:\estudos\teste.php
on line 10
Isso nos mostra que, de fato, recursos marcados como private
são acessíveis somente à classe. Desta
forma, tais recursos podem ser acessados usando métodos
public. Veja:
<?
// definição da classe Pessoa
class Pessoa{
private $nome;
public function getNome(){
return $this->nome;
}
public function setNome($nome){
$this->nome = $nome;
}
}
// cria uma instância chamada $cliente
$cliente = new Pessoa();
// altera a propriedade nome do objeto
$cliente->setNome("Geraldo Gomes da Silva");
// exibe o nome do cliente
echo $cliente->getNome();
?>
Veja que agora o nome do cliente é definido a partir
do método public setNome:
public function setNome($nome){
$this->nome = $nome;
}
O identificador $this é usado para acessar
recursos locais da classe. Os prefixos "set" e "get"
são muito usados para definir métodos que acessam
ou alteram dados privados de uma classe. Veja o método
que obtém o nome:
public function getNome(){
return $this->nome;
}
Veja como usamos $this novamente para acessar
a propriedade nome e devolvê-la na saída do método.
O modificador protected é um pouco mais
elaborado. Este modificador permite o acesso a propriedades
e métodos somente à classe a qual eles pertencem
e a outras classes filhas desta (através do recurso de
herança). Adie o estudo deste modificador até
o momento em que estiver confiante em relação
à herança.
Por padrão, ou seja, quando omitimos os modificadores,
a visibilidade de propriedades
e métodos são public. No entanto,
é necessário inserir a palavra-chave var
antes
das propriedades da classe. Assim:
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.