PHP OOP - Modificadores de acesso
PHP - Modificadores de acesso
Propriedades e métodos podem ter modificadores de acesso que controlam onde eles podem ser acessados.
Existem três modificadores de acesso:
-
public
- a propriedade ou método pode ser acessado de qualquer lugar. Isso é padrão -
protected
- a propriedade ou método pode ser acessado dentro da classe e por classes derivadas dessa classe -
private
- a propriedade ou método só pode ser acessado dentro da classe
No exemplo a seguir, adicionamos três modificadores de acesso diferentes a três propriedades (nome, cor e peso). Aqui, se você tentar definir a propriedade name, ela funcionará bem (porque a propriedade name é pública e pode ser acessada de qualquer lugar). No entanto, se você tentar definir a propriedade de cor ou peso, resultará em um erro fatal (porque a propriedade de cor e peso é protegida e privada):
Exemplo
<?php
class Fruit {
public
$name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
No próximo exemplo, adicionamos modificadores de acesso a duas funções. Aqui, se você tentar chamar a função set_color() ou set_weight() resultará em um erro fatal (porque as duas funções são consideradas protegidas e privadas), mesmo que todas as propriedades sejam públicas:
Exemplo
<?php
class Fruit {
public
$name;
public $color;
public $weight;
function set_name($n) {
// a public function (default)
$this->name = $n;
}
protected function set_color($n) {
// a protected function
$this->color = $n;
}
private function set_weight($n) {
// a private function
$this->weight = $n;
}
}
$mango = new Fruit();
$mango->set_name('Mango'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>