Die Sichtbarkeit einer Eigenschaft oder Methode kann definiert werden, indem man der Deklaration eines der Schlüsselwörter public, protected oder private. voranstellt. Auf public deklarierte Elemente kann von überall her zugegriffen werden. Protected beschränkt den Zugang auf Elternklassen und abgeleitete Klassen (sowie die Klasse, die das Element definiert). Private grenzt die Sichtbarkeit einzig auf die Klasse ein, die das Element definiert.
Sichtbarkeit | Zugriff aus eigener Klasse | Zugriff aus abgeleiteter Klasse | Zugriff außerhalb der Klasse |
---|---|---|---|
private | ja | nein | nein |
protected | ja | ja | nein |
public | ja | ja | ja |
Beispiel:
class test { public $pub; // kann gelesen und geändert werden private $priv; // kann weder gelesen noch verändert werden protected $pro; // kann weder gelesen noch verändert werden public function __construct( $a, $b, $c ) { $this->pub = $a; $this->priv = $b; $this->pro = $c; } } $obj = new test( "A", "B", "C" ); foreach( $obj as $key=>$val ) { echo "<p>$key: $val</p>"; // es wird ausschließlich "pub: A" ausgegeben. } $obj->pub = 1; // funktioniert fehlerfrei $obj->priv = 2; // Fatal error: Cannot access private property test::$priv $obj->pro = 3; // Fatal error: Cannot access protected property test::$pro