Vorteile von Settern und Gettern in OOP in PHP
In der vorherigen Lektion haben wir für jede Eigenschaft einen Getter und Setter erstellt. Es könnte die Frage aufkommen, wozu solche Kompliziertheiten nötig sind, denn denselben Effekt könnte man doch erreichen, wenn man die Eigenschaften öffentlich macht, anstatt privat.
Die Sache ist die, dass Getter und Setter einen Vorteil haben: vor dem Zugriff auf eine Eigenschaft können einige Überprüfungen durchgeführt werden. In unserem Fall können wir beispielsweise beim Schreiben des Vor- und Nachnamens prüfen, dass der neue Wert kein leerer String ist:
<?php
class User {
private $name;
private $surn;
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'name is incorrect';
}
}
public function setSurn($surn) {
if (strlen($surn) > 0) {
$this->surn = $surn;
} else {
echo 'surn is incorrect';
}
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
Lassen Sie uns testen, wie das funktioniert. Zuerst erstellen wir ein Objekt der Klasse:
<?php
$user = new User();
?>
Versuchen wir nun, einen korrekten Wert zu schreiben:
<?php
$user->setName('john');
?>
Versuchen wir nun, einen inkorrekten Wert zu schreiben:
<?php
$user->setName(''); // Fehler
?>
In der Klasse Employee
sollen Sie im Setter
für das Alter eine Überprüfung implementieren,
dass das Alter zwischen
0
und 120
liegen muss.
In der Klasse Employee
sollen Sie im Getter
für das Gehalt es so machen, dass
beim Auslesen des Gehalts an das Ende seines
Wertes ein Dollarzeichen angehängt wird.