POO – Visibilidade de Atributos de Métodos
O meu objetivo aqui não é ensinar como se programa orienta a objeto de um mode geral, e sim, como se usa a sitaxe da linguagem PHP.
As visibilidade disponíveis são privativo (private), públicos(public) e protegidos(protect), eles definem como o atributo ou método se comporta dentro do meu programa.
Modificador Public
Quando você define um método ou atributo como público, você está liberando o acesso a ele de qualquer lugar que contenha a classe.
Ex:
<?php class carro { public $modelo; public function setModelo($_model) { $this->modelo = $_model; } } $objeto = new carro; $objeto->setModelo(“GOLF”); $modelo = “CHALERA”; ?> |
Observe que eu consigo mudar o valor do atributo de fora da classe.
Modificador Protected
Esse modificador restringe o acesso de fora da classe, porém ele ainda é acessível de suas subclasses, ou seja, as classes que herdaram os atributos dela.
<?php class carro { protected $modelo; protected function setModelo($_model) { $this->modelo = $_model; } } class caminhao extends carro { public function setModelo($_mo) { parent::modelo = $_mo;//não da erro } } $objeto = new carro; $objeto->setModelo(“GOLF”);//causa erro $modelo = “CHALERA”;//causa um erro ?> |
Consigo acessar de dentro das sub classes, mas de fora das classes, eu não tenho acesso.
Modificador Private
Esse modificador é mais restritivo, só da permissão de acesso a sua própria classe, em nenhum outro lugar eu posso acessá-la.
<?php class carro { private $modelo; private function setModelo($_model) { $this->modelo = $_model; } } class caminhao extends carro { public function setModelo($_mo) { parent::modelo = $_mo;//causa erro } } $objeto = new carro; $objeto->setModelo(“GOLF”);//causa erro $modelo = “CHALERA”;//causa um erro ?> |
Agora ele não permitiu modificar fora de sua própria classe, nem das que a herdam pode acessá-la.
Quanto a que visibilidade que eu devo definir, fica a critério do programador e do analista, veja sua necessidade, para que seu código não possa lhe dar dor de cabeça.
Fonte: Plugmasters – Thiago Victorino