Visibilidade de Funções e Variáveis no PHP

Visibilidade é uma grande parte da programação orientada a objetos. Na prática, permite que você controle quem poderá acessar suas variáveis ou funções, prevenir quem pode herda-la entre outros aspectos que se pode controlar.

Declarar visibilidade de funções no PHP é opcional, no entanto, é uma boa prática de programação. Caso você não explicite a visibilidade, será sempre público.

O que é modificador de acesso

Modificador de acesso é a palavra chave que define um atributo, classe ou método a sua visibilidade. É um recurso bastante comum em orientação a objetos.

Quais são os modificadores de acesso no PHP

A linguagem PHP é bastante simples neste ponto. Basicamente, você tem apenas três diferentes modificadores: privado (private), protegido (protected) ou público (public). Vou explicar abaixo como funciona cada um desses modificadores.

  • Private: significa que apenas membros ou funções da classe podem acessa-la.
  • Protected: significa que apenas os membros ou funções da classe podem acessa-la e também, as classes que herdar delas.
  • Public: significa que todas as classes podem acessar, independente se herdar delas ou não.

Exemplos de visibilidade de classes

Como disse anteriormente, a visibilidade pública é a menos restritiva disponível no PHP. Se você não definir, será público por default. Métodos ou variáveis públicas podem ser acessadas de qualquer lugar.

Veja o exemplo abaixo.

class teste
{
public $variavel1;
public $variavel2;
public function metodo()
{
}
}
$objA = new teste();
echo $objA->variavel1; //Acessível fora da classe.
$objA->metodo(); //Acessível fora da classe.

 

No exemplo acima é bastante simples e demonstra o que pode resultar desastroso em alguns cenários. Com a classe totalmente pública, não há restrição para acessar suas propriedades e métodos fora da classe.

Exemplo de visibilidade privada no PHP

Métodos privados ou propriedades serão acessíveis apenas dentro de suas classes. O desenvolvedor que utilizará jamais conseguirá manipular as variáveis ou funções internas fora da classe. São usadas apenas quando você não quer expor essa informações fora da classe.

Class novoTesteClassePublica
{
public $abc;
private $xyz;
public function publicoFazer($a)
{
echo $a;
}
private function privadoFazer($b)
{
echo $b;
}
public function publicoFazerRotina()
{
$this->xyz = 1;
$this->privadoFazer(1);
}
}
$exemploObjeto = new novoTesteClassePublica();
$exemploObjeto ->abc = 73; //Funciona perfeitamente
$exemploObjeto ->xyz = 144;//Irá ocorrer um erro
$exemploObjeto ->publicoFazer("Rodrigo"); //Irá exibir a palavra "Rodrigo"
$exemploObjeto ->privadoFazer(1); //Novamente Dará erro
$exemploObjeto ->publicoFazerRotina();// Dentro deste método existe uma função privada. Como é executado dentro de uma função pública, não haverá erro.

 

Exemplo de visibilidade protegida no PHP

Visibilidade protegida no PHP são úteis em caso de herança e de implementação de interfaces. Métodos protegidos ou variáveis são disponíveis apenas dentro de suas classes e nas classes filhas.

Vamos para mais um exemplo:

 

class ClassePai
{
protected $pr;
public $a
protected function testeParente()
{
echo 'Apenas um teste';
}
}

// Classe herdada de ClassePai
class ClasseFilha extends ClassePai
{
public function testeFilho()
{
$this->testeParente(); //Irá funcionar
}
}
$objParente = new ClassePai();
$objParente->testeParente();//Irá ocorrer um erro
$objFilha = new ClasseFilha();
$objFilha->testeFilho(); // Funciona porque a classe filha irá invocar o método da classe pai.

 

Visibilidade de Funções e Variáveis no PHP
5 (100%) 1 vote

Deixe um comentário