<?php
header('Content-Type: text/html;charset=utf-8');
class EineKlasse
{
/* Mich sieht und ändert nur meine Klasse. Ich werde auch NICHT vererbt */
private $privat = 'Eigentum von EineKlasse';
/* Mich können auch meine Kindklassen sehen und ändern. Ich werde an meine Kinder vererbt */
protected $beschuetzt = 'Eigentum von EineKlasse und allen Erben.';
/* Ich bin für alle sicht- und änderbar. */
public $oeffentlich = 'Öffentliches Eigentum';
public function __construct ()
{
$methodenVariable = 'Ich bin nur in einer Methode sichtbar...';
}
public function getAll()
{
return sprintf('<b>privat:</b> %s; <b>beschützt:</b> %s; <b>öffentlich:</b> %s, <b>$methodenVariable:</b>', $this->privat, $this->beschuetzt, $this->oeffentlich, $methodenVariable);
}
}
/* Eine Kindklasse */
class KindEinerKlasse extends EineKlasse
{
protected $beschuetzt = 'Das Eigentum der Erben wurde geändert';
/* Konstruktor wurde von EineKlasse geerbt, würde ich getAll() nicht überschreiben, hätte KindEinerKlasse jedoch auch "Zugriff" auf $privat,
da $eineKindK->getAll() nur ein "Synonym" für $eineK->getAll() wäre. Testweise kannst du die folgende Methode rausnehmen, umes zu verdeutlichen. */
public function getAll()
{
return sprintf('<b>privat:</b> %s; <b>beschützt:</b> %s; <b>öffentlich:</b> %s, <b>$methodenVariable:</b>', $this->privat, $this->beschuetzt, $this->oeffentlich, $methodenVariable);
}
}
$eineK = new EineKlasse();
echo $eineK->getAll().'<br />';
$eineKindK = new KindEinerKlasse();
echo $eineKindK->getAll().'<br />';
/* Auf public deklarierte Klassenvariablen kann man auch von außerhalb zugreifen... */
echo $eineK->oeffentlich.'<br />'.$eineKindK->oeffentlich.'<br />';
/* Man kann die öffentlichen Variablen auch ändern */
$eineK->oeffentlich = 'Hallo!';
echo $eineK->oeffentlich.'<br />';
/* Folgendes wird aber einen Fehler erzeugen... */
echo $eineK->beschuetzt;
echo $eineKindK->beschuetzt;
echo $$eineK->privat;
?>