PHP OOP - Modificadores de acceso
PHP - Modificadores de acceso
Las propiedades y los métodos pueden tener modificadores de acceso que controlan dónde se puede acceder a ellos.
Hay tres modificadores de acceso:
-
public
- se puede acceder a la propiedad o método desde cualquier lugar. esto es por defecto -
protected
- se puede acceder a la propiedad o método dentro de la clase y por clases derivadas de esa clase -
private
- SOLO se puede acceder a la propiedad o método dentro de la clase
En el siguiente ejemplo, hemos agregado tres modificadores de acceso diferentes a tres propiedades (nombre, color y peso). Aquí, si intenta establecer la propiedad de nombre, funcionará bien (porque la propiedad de nombre es pública y se puede acceder desde cualquier lugar). Sin embargo, si intenta establecer la propiedad de color o peso, se producirá un error fatal (porque las propiedades de color y peso están protegidas y son privadas):
Ejemplo
<?php
class Fruit {
public
$name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
En el siguiente ejemplo, hemos agregado modificadores de acceso a dos funciones. Aquí, si intenta llamar a la función set_color() o set_weight(), se producirá un error fatal (porque las dos funciones se consideran protegidas y privadas), incluso si todas las propiedades son públicas:
Ejemplo
<?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
?>