Hauptmenü

Untermenü

OOP PHP5 - Grundlagen - Sichtbarkeit

1. Einführung

Erinnert ihr euch an den Geltungsbereich von Variablen in Funktionen. Da wo man auf Variablen nur in einem bestimmten Zusammenhang zugreifen konnte? Dies hier ist eine erweiterte Form der Zugriffsbeschränkung, die man selber steuern kann. Leider muss ich jetzt allen PHP4-Nutzern mitteilen, dass für sie an dieser Stelle endgültig Schluss ist. Alles, was hier folgt, gibt es erst seit PHP5.

2. Sichtbarkeit

Das bedeutet in diesem Zusammenhang, in wie weit Objekte auf Eigenschaften (Variablen) von Klassen zugreifen und sie verändern können. Oder ob sie die Methoden (Funktionen) von Klassen nutzen oder überschreiben können. Da gibt es drei Möglichkeiten:

Wenn man das alte var aus PHP4 bei Variablen (Eigenschaften) nimmt, so wird automatisch public gesetzt. Bei Funktionen muss man das auch nicht angeben, dann gilt dasselbe. Auch wenn ich von beiden Möglichkeiten dringenst abrate! Setzt daher immer eine Sichtbarkeitsstufe. Das erhöht die Lesbarkeit des Codes.

3. Ein Beispiel

So, um seine Dörte nach allen Regeln der Kunst zu bezirzen, hat Dieter dank diverser Anleitungen aus dem Internet einen gaaanz tollen Liebesbrief geschrieben. Und der soll nun ganz analog an seine Angebetete verschickt werden. Damit das nun klappt, muss die Post eine Adresse und den Inhalt bekommen. Und da sie ihn nicht selber abholt, muss der noch in einen Briefkasten geworfen werden. Das sähe dann zum Beispiel so aus.


class BriefZustellen
{
  public $adresse;
  public $inhalt;
  public function werfBriefEin()
  {
    ...
  }
}

So, damit wäre nun alles getan, was nicht in den Händen der Post liegt. Damit der Brief aber nun sein Ziel erreicht, bedarf es noch einiger zusätzlicher Methoden und Eigenschaften. Und die kann man ruhig als private deklarieren, weil das Objekt darauf keinen Einfluss mehr haben sollte.


class BriefZustellen
{
  public  $adresse;
  public  $inhalt;
  private $versendet;
  public function werfBriefEin()
  {
    ...
  }
  private function sortierBriefEin()
  {
    ...
  }
  private function stellBriefZu()
  {
    ...
  }
}

4. Sinn und Zweck

Wozu denn nun dieses ganze Buhei? Ist es nicht einfacher, einen kompletten Vollzugriff zu erlauben, um flexibler zu sein? Nein. private heißt nicht so etwas wie "das geht dich einen Sch***dreck an", sondern es bedeutet "das ist etwas, um das du dich nicht kümmern musst". Wenn Eigenschaften oder Methode ausschließlich für die interne Verarbeitung einer Klasse gedacht sind, so kann das den Benutzern(!) dieser Klasse egal sein. Das hat den Vorteil, dass wenn diese Klasse umprogrammiert wird, der Nutzer seinen(!) Code nicht anpassen muss.

5. protected

Um nun zu wissen, wann man damit arbeitet, muss man erst etwas über das Vererbungsprinzip wissen.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt