5.3.6 Methode get
Die Methode __get()
wird aufgerufen, sobald ein Zugriff auf eine nicht existente Eigenschaft einer Klasse erfolgt, z.B. weil die Eigenschaft mit __set()
gesetzt wurde.
| class Student
{
private $name = "keine Angabe";
private $matrNumber = 0;
protected $exams = []; // Eigenschaft $exams als assoz. Array
public function __construct(string $name, int $matrNumber)
{
$this->matrNumber = $matrNumber;
$this->name = $name;
}
public function __set(string $subject, float $grade): void
{
$this->exams[$subject] = $grade;
}
public function __get(string $subject): ?float
{
if (isset($this->exams[$subject])) {
return $this->exams[$subject];
} else {
return null;
}
}
}
$ute = new Student("Ute", 7201234);
$ute->Internetprogrammierung = 1.3; // Wert einer Eigenschaft zuweisen
echo $ute->Internetprogrammierung; // Wert aus der Eigenschaft auslesen
|
Ausgabe:
1.3
In Zeile 30 wird nun eine Eigenschaft aufgerufen, die in der Klasse nicht deklariert ist. Somit wird nachgeschaut, ob es eine __get()
-Methode gibt, die stattdessen aufgerufen wird.
Anmerkung
In Zeile 18 sehen wir mit ?float
etwas Neues. Das ?
vor dem float
bedeutet, dass auch der Wert null
zurückgegeben werden kann und ist notwendig, da ein return null
in Zeile 23 steht.