PHP OOP - Zugriffsmodifikatoren
PHP - Zugriffsmodifikatoren
Eigenschaften und Methoden können Zugriffsmodifikatoren haben, die steuern, wo auf sie zugegriffen werden kann.
Es gibt drei Zugriffsmodifikatoren:
-
public
- Auf die Eigenschaft oder Methode kann von überall zugegriffen werden. Dies ist Standard -
protected
- Auf die Eigenschaft oder Methode kann innerhalb der Klasse und von Klassen, die von dieser Klasse abgeleitet sind, zugegriffen werden -
private
- Auf die Eigenschaft oder Methode kann NUR innerhalb der Klasse zugegriffen werden
Im folgenden Beispiel haben wir drei verschiedenen Zugriffsmodifikatoren zu drei Eigenschaften hinzugefügt (Name, Farbe und Gewicht). Wenn Sie hier versuchen, die Namenseigenschaft festzulegen, funktioniert dies problemlos (weil die Namenseigenschaft öffentlich ist und von überall aus darauf zugegriffen werden kann). Wenn Sie jedoch versuchen, die Eigenschaft color oder weight festzulegen, führt dies zu einem schwerwiegenden Fehler (da die Eigenschaft color und weight geschützt und privat sind):
Beispiel
<?php
class Fruit {
public
$name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
Im nächsten Beispiel haben wir Zugriffsmodifikatoren zu zwei Funktionen hinzugefügt. Wenn Sie hier versuchen, die Funktion set_color() oder set_weight() aufzurufen, führt dies zu einem schwerwiegenden Fehler (da die beiden Funktionen als geschützt und privat betrachtet werden), selbst wenn alle Eigenschaften öffentlich sind:
Beispiel
<?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
?>