OOP no PHP: Visibilidade, definições de public, protected, private e static
Postado por Tobias em 11.12.2008 12:52 Desenvolvimento web, OOP, php
E ae blz?
Bom inaugurando a minha participação aqui no blog resolvi começar com uma série de artigos sobre OOP e PHP, no primeiro post eu vou explicar o que significam as palavrinhas public, protected, private e static, o que significam e a função de cada uma delas em nossas classes.
Só pra constar essa série inicial terá 5 posts com os seguintes assuntos.
- Visibilidade, definições de public, protected, private e static
- Heranças e Interfaces, extendendo e implementando classes
- Reaproveitamento, Sobrescrevendo métodos
- Overloading, utilizando os métodos mágicos do PHP
- Improviso, simulando a sobrecarga de métodos no PHP
Bom já que estamos com tudo resolvido vamos começar a brincadeira.
As definições de escopo são bem simples e não há necessidade de se extender falando delas.
public é a liberal das definições de escopo, todo método ou atributo de uma classe definido como
public pode ser acessado de qualquer lugar.
protected é um pouco mais contida só pode ser acessada de dentro da classe e de suas classes filhas.
private como o nome já diz é totalmente restrita e só pode ser acessada de dentro da classe.
Exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php class Exemplo { public $publicInfo = 'Sou uma informação pública'; protected $protectedInfo = 'Sou uma informação protegida'; private $privateInfo = 'Sou uma informação restrita'; public function getPublicInfo() { echo $this->publicInfo; } protected function getProtectedInfo() { echo $this->protectedInfo; } private function getPrivateInfo() { echo $this->privateInfo; } } $exemplo = new Exemplo; //Imprime Sou uma informação pública $exemplo->getPublicInfo(); //Retorna Fatal error: Call to protected method Exemplo::getProtectedInfo() from context $exemplo->getProtectedInfo(); //Retorna Fatal error: Call to private method Exemplo::getPrivateInfo() from context $exemplo->getPrivateInfo(); ?> |
Tudo bem aparentemente, então vamos pra função de static.
static permite que algum método ou atributo de uma classe seja chamado sem a necessidade de instanciar a classe. O método/atributo é chamado da seguinte forma:
NomeDaClasse::NomeDoMetodo() ou
NomeDaClasse::$NomeDoAtributo
Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php class ExemploStatic { public static $atributo = 'Eu tenho alguma informação'; public static function fazAlgumaCoisa() { echo 'Eu faço alguma coisa'; } } //Imprime Eu tenho alguma informação echo ExemploStatic::$atributo; //Imprime Eu faço alguma coisa ExemploStatic::fazAlgumaCoisa(); ?> |
É por hora acho que já ta de bom tamanho, você pode encontrar mais informações sobre public, private e protected e também sobre a static na documentação oficial do php.
Ainda ficou com alguma dúvida? sim? bom os comentários tão aqui pra isso, mas se você não ficou com dúvidas e quer dar um puxão de orelha no menino aqui, os comentários também server pra isso.
Um abraço e até o próximo post.

