Sichtbarkeit

Aus php bar

(Weitergeleitet von protected)
Wechseln zu: Navigation, Suche

Seit PHP 5 kann man mit bestimmten Schlüsselwörtern die Sichtbarkeit und das Verhalten von Methoden und Eigenschaften einer Klasse bestimmen.

Inhaltsverzeichnis

public

Öffentlich, aus allen Code-Teilen heraus sichtbar.

 class MeineKlasse
 {
     public $a        = 'öffentlich';
     public static $b = 'öffentlich, statisch';
 }
 
 echo MeineKlasse::$b;
 
 $mein_objekt = new MeineKlasse;
10 echo $mein_objekt->a;


protected

Der Zugriff auf geschützte Eigenschaften und Methoden ist nur innerhalb der selben Klasse oder in abgeleiteten Klassen möglich.

 class Klasse
 {
     protected $a        = 'geschützt';
     protected static $b = 'geschützt, statisch';
 }
 
 class Ableitung extends Klasse {
     public function druckeA() {
         echo $this -> a;
10     }
11 
12     public static function druckeB() {
13         echo self::$b;
14     }
15 }
16 
17 Ableitung::druckeB();
18 
19 $objekt = new Ableitung();
20 $objekt -> druckeA();
21 
22 // Ein direkter Zugriff auf die Eigenschaften verursacht einen Fehler
23 echo $object -> a;
24 echo Klasse::$b;


private

Privat, wird nicht vererbt, ist also nicht in abgeleiteten Klassen verfügbar.

 class MeineKlasse
 {
     private $eigenschaft = 'öffentlich';
 }
 
 class MeineErweiterteKlasse extends MeineKlasse
 {
 }
 
10 echo MeineKlasse::$eigenschaft;
11 // FEHLER:
12 echo MeineErweiterteKlasse::$eigenschaft;


final

Fertig, darf nicht in abgeleiteten Klassen überschrieben werden.

 class MeineKlasse
 {
     final function methode()
     {
         echo __METHOD__ . ' aufgerufen';
     }
 }
 
 class MeineErweiterteKlasse extends MeineKlasse
10 {
11     // FEHLER:
12     public function methode()
13     {
14         echo 'überschriebene ' . __METHOD__ . ' aufgerufen';
15     }
16 }


abstract

Entwurf, muss in abgeleiteten Klassen überschrieben werden. Ebenso muss eine Klasse mit einer mit abstract markierten Methode selbst auch abstract sein.

 abstract class MeineKlasse
 {
     abstract public function methode() {};
 }
 
 class MeineErweiterteKlasse extends MeineKlasse
 {
     public function methode()
     {
10         echo 'überschriebene ' . __METHOD__ . ' aufgerufen';
11     }
12 }



Persönliche Werkzeuge