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.