osob.de Unicorn Logo
Blogpost overview

Anleitung: Wann PHP-Methoden als Public, Private, Protected, Final und Readonly deklarieren? | 26.10.2023

Kurzer Quickie: In der objektorientierten Programmierung mit PHP ist es entscheidend, die richtige Sichtbarkeit und die richtigen Attribute für deine Methoden zu wählen. Hier erfährst du, wann du welche verwenden solltest.

You like what you find here? A donation helps to keep this project running.

Public: Offen für alle

Wenn du möchtest, dass deine Methode von überall her aufgerufen werden kann, setze sie auf public. Sie ist dann Teil der öffentlichen Schnittstelle deiner Klasse.

class Beispiel {
    public function oeffentlicheMethode() {
        echo "Jeder kann mich sehen und nutzen!";
    }
}

Private: Nur für dich

Setze eine Methode auf private, wenn sie nur innerhalb der Klasse genutzt werden soll, in der sie definiert ist. Das hilft dir, die internen Abläufe deiner Klasse zu kapseln und vor äußeren Zugriffen zu schützen.

class Beispiel {
    private function privateMethode() {
        echo "Ich bin nur hier drinnen verfügbar!";
    }
}

Protected: Für die Familie

Protected ist die Wahl, wenn du möchtest, dass deine Methode in der Klasse und ihren Unterklassen verfügbar ist. Sie ist nicht von außen zugänglich, aber für Erben offen.

class Beispiel {
    protected function geschuetzteMethode() {
        echo "Unterklassen können mich nutzen!";
    }
}

Final: Nicht veränderbar

Mit final deklarierte Methoden können in Unterklassen nicht überschrieben werden. Das ist nützlich, wenn eine Methode so wichtig oder sensibel ist, dass eine Veränderung ihr Verhalten riskieren könnte.

class Beispiel {
    final public function finaleMethode() {
        echo "Ich kann nicht überschrieben werden!";
    }
}

Readonly: Nur zum Lesen

PHP 8.1 hat readonly eingeführt. Damit kannst du sicherstellen, dass eine Eigenschaft nach der Initialisierung nicht mehr verändert werden kann. Das gilt jedoch nicht für Methoden, sondern nur für Eigenschaften.

class Beispiel {
    public readonly string $unveraenderlich;
    
    public function __construct(string $wert) {
        $this->unveraenderlich = $wert;
    }
}

Fazit

Denke immer daran, dass die richtige Wahl der Sichtbarkeit und Attribute deiner Methoden dazu beiträgt, deinen Code sicherer, verständlicher und robuster zu gestalten.