5.3.1 Getter und Setter

Es ist oftmals eine gute Lösung, wenn Eigenschaften nicht direkt gelesen oder geschrieben werden, sondern private sind und der Zugriff nur über sogenannte Getter- und Setter-Methoden erfolgt. Denn dies hat folgende Vorteile:

  • Bevor eine Eigenschaft einen Wert zugewiesen bekommt, kann man prüfen, dass der neue Wert keinen "Datenmüll" enthält und der Wert dem Wertebereich entspricht (es sich also um einen gültigen Wert handelt).
  • public-Eigenschaften können von überall gelesen und geschrieben werden. Oftmals möchte man aber den "schreibenden Zugriff" nicht von überall zulassen. So kann es Eigenschaften geben, die über einen Getter immer lesbar sind, bei denen aber schreibende Änderungen an Bedingungen geknüpft sind.
  • Später werden wir auch sehen, dass es somit möglich ist, mit dem Beobachter-Pattern] die Information der Wertänderung einer Eigenschaft an andere Programmteile weiterzuleiten.
class Student
{
    private $matrNumber = "1324345";      
    private $phoneNumber = "keine Angabe"; 

    public function getMatriculationNumber(): string
    {
        return $this->matrNumber; 
    }

    public function setPhoneNumber(string $newPhoneNumber): void
    {
        $this->phoneNumber = $newPhoneNumber;
    }

    public function getPhoneNumber(): string
    {
        return $this->phoneNumber;
    }
    ...
}

Im gezeigten Beispiel kann man die Matrikelnummer $matrNumber zwar über getMatriculationNumber() auslesen, aber nicht ändern. Die Telefonnummer $phoneNumber hingegen kann man über die Methode getPhoneNumber() auslesen und über setPhoneNumber() auch ändern.

Anmerkung

Es gibt auch kritische Stimmen zur (umfangreichen) Verwendung von Gettern und Settern: