Modificadores de acesso a métodos e propriedades em PHP

Veremos neste capítulo os novos modificadores de acesso aos métodos e atributos dos objetos que foram incorporados em PHP 5. Estes modificadores de acesso são os conhecidos public, protected e private, que já dispõem de outras linguagens como Java.

Um dos princípios da programação orientada a objetos é o encapsulamento, que é um processo no qual se ocultam as características internas de um objeto àqueles elementos que não têm porque conhece-las. Os modificadores de acesso servem para indicar as permissões que terão outros objetos para acessar a seus métodos e propriedades.

Modificador public

É o nível de acesso mais permissivo. Serve para indicar que o método ou atributo da classe é público. Neste caso pode-se acessar a este atributo, para visualizá-lo ou edita-lo, por qualquer outro elemento de nosso programa. É o modificador que se aplica se não se indica outra coisa.

Vejamos um exemplo de classe onde declaramos como public seus elementos, um método e uma propriedade. Trata-se da classe “dado”, que tem um atributo com sua pontuação e um método para tirar o dado o obter uma nova pontuação aleatória.

class dado{
public $pontos;

function __construct(){
srand((double)microtime()*1000000);
}

public function tirar(){
$this->pontos=$randval = rand(1,6);
}
}

$meu_dado = new dado();

for ($i=0;$i<30;$i++){
$meu_dado->tirar();
“<br>Saiu ” . $meu_dado->pontos . ” pontos”;
}

Vemos a declaração da classe dado, e logo umas linhas de código para ilustrar seu funcionamento. No exemplo se realiza um loop 30 vezes, nas quais se tira o dado e se mostra a pontuação que se obteve.

Como o atributo $pontos e o método tirar() são públicos, podemos acessá-los de fora do objeto, ou que é o mesmo, de fora do código da classe.

Modificador private

É o nível de acesso mais restritivo. Serve para indicar que essa variável somente vai poder ser acessada pelo próprio objeto, nunca de fora. Se tentarmos acessar um método ou atributo declarado private de fora do próprio objeto, obteremos uma mensagem de erro indicando que não é possível a este elemento.

Se no exemplo anterior tivéssemos declarado private o método e a propriedade da classe dado, teríamos recebido uma mensagem de erro.

Aqui temos outra possível implementação da classe dado, declarando como private o atributo pontos e o método tirar().

class dado{
private $pontos;

function __construct(){
srand((double)microtime()*1000000);
}

private function tirar(){
$this->pontos=$randval = rand(1,6);
}

public function dar_nova_pontuacao(){
$this->tirar();
return $this->pontos;
}
}

$meu_dado = new dado();

for ($i=0;$i<30;$i++){
“<br>Han salido ” . $meu_dado->dar_nova_pontuacao() . ” pontos”;
}

Tivemos que criar um novo método público para operar com o dado, porque se é tudo privado não há forma de fazer uso dele. O mencionado método é dar_nova_pontuacao(), que realiza a ação de tirar o dado e devolver o valor que saiu.

Modificador protected

Este indica nível de acesso médio e um pouco mais especial que os anteriores. Serve para que o método ou o atributo seja público dentro do código da própria classe e de qualquer classe que herde daquela onde está o método ou propriedade protected. É privado e não acessível de qualquer outra parte. Ou seja, um elemento protected é público dentro da própria classe e em suas heranças.

Mais adiante explicaremos a herança e poderemos oferecer exemplos com o modificador protected.

Conclusão

Muitas vezes o próprio desenvolvedor é o que fixa seu critério na hora de aplicar os distintos modificadores de acesso a atributos e métodos. Pouca proteção implica que os objetos percam seu encapsulamento e com isso, uma das vantagens da POO. Uma proteção maior pode tornar mais trabalhoso gerar o código do programa, mas em geral, é aconselhável.

Fonte: http://www.criarweb.com/artigos/339.php

Deixe um comentário