Cada membro da classe tem um nível de acessibilidade que determina onde o membro será visível. Há três deles disponíveis no PHP: público(public), protegido(protected) e privado(private).

<?php
class MyClass{
    public $myPublic; // acesso irrestrito
    protected $myProtected; // acesso somente aos filhos
    private $myPrivate; // acesso restrito, somente na classe atual
}
?>

Acesso privado

Todos os membros, independentemente do nível de acesso são acessíveis na classe em que elas são declaradas. O único lugar onde um membro privado pode ser acessado é na mesma classe.

<?php
class MyClass{
    public $myPublic = 'public';
    protected $myProtected = 'protected';
    private $myPrivate = 'private';

    function test(){
        echo $this->myPublic; // permitido
        echo $this->myProtected; // permitido
        echo $this->myPrivate; // permitido
    }
}
?>

Ao contrário das propriedades, métodos não tem que ter um nível de acesso especificado. Eles será o padrão para o acesso público a menos que seja para outro nível.

Acesso protegido (Protected)

Um membro protegido pode ser acessado de dentro da classe filho ou da classes pai, bem como de dentro da classe de inclusão.

<?php
class MyChild extends MyClass{
    function test(){
        echo $this->myPublic;    // permitido
        echo $this->myProtected; // permitido
        echo $this->myPrivate;   // inacessível
    }
}
?>

O acesso do público

Membros públicos têm acesso irrestrito. Além de qualquer membro protegido pode ser acessado, um membro do público também pode ser alcançado através de uma variável de objeto.

<?php
    $m = new MyClass();
 
    echo $m->myPublic; // permitido
    echo $m->myProtected; // inacessível
    echo $m->myPrivate; // inacessível
?>

Palavra-chave var

Antes do PHP 5, a palavra-chave var foi usado para declarar propriedades. Para manter a compatibilidade com versões anteriores esta palavra-chave ainda é utilizável e dá acesso público, assim como o modificador público.

<?php
class MyVars{
    var $x, $y; // declaração de propriedade obsoleta
}
?>

Acesso a objetos

No PHP, os objetos da mesma classe têm acesso a uns aos outros membros de classes  privados e protegidos. Esse comportamento é diferente de muitas outras linguagens de programação, onde o acesso não é permitido.

<?php
class MyClass{
private $myPrivate;
    function setPrivate($obj, $val){
        $obj->myPrivate = $val; // definir a propriedade privada
    }
}
$a = new MyClass();
$b = new MyClass();
$a->setPrivate($b, 10);
?>

Diretriz de nível de Acesso

Como orientação, ao escolher um nível de acesso geralmente é melhor usar o nível mais restritivo possível. Isso ocorre porque um ou mais membros podem ser acessados e podem ser acessados ​​de forma incorreta, o que torna o código mais difícil de debugar. Usando níveis de acesso restritivas também irá torná-lo mais fácil de modificar a classe sem quebrar o código para quaisquer outros desenvolvedores que usam essa classe.

Links Úteis

http://php.net/manual/pt_BR/language.oop5.visibility.php

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.