Konstrukor der Parent klasse ansprechen = wie ?
jo
- php
0 PHP Version = welche?
lulu-1 Patient0 globe0 dedlfix0 jo
hallo,
ich habe eine klasse mit "class calContent extends calendar" erstellt.
diese erbt alle Methoden von "calendar".
wenn ich nun ein objekt mit der neuen klasse "calContent" erstelle ... $c=new calContent(); wird nur der konstrukor von calContent ausgeführt.
wie kann ich auch den Konstruktor der Elternklasse aufrufen ?
gruß
jo
Huhu jo,
wie kann ich auch den Konstruktor der Elternklasse aufrufen ?
Welche PHP-Version ist es denn?
Viele Grüße
lulu
Hallo,
ich habe eine klasse mit "class calContent extends calendar"
calendar::methode()
Grüße aus Moabit
Patient
n'abend,
wie kann ich auch den Konstruktor der Elternklasse aufrufen ?
um die elternklasse aufzurufen:
parent::function();
um eine explizite klasse in einer ganzen hierarchie von vererbungen aufzurufen:
className::function();
weiterhin schönen abend...
echo $begrüßung;
wie kann ich auch den Konstruktor der Elternklasse aufrufen ?
PHP 4:
Wie nachzulesen ist, werden geerbte Konstruktoren nicht automatisch aufgerufen. Zugriff auf die Elternklasse erhält man mit parent. Damit kann man normale Methoden wie auch den Konstruktor aufrufen.
parent::name_der_methode();
Beim Ändern des Elternklassennamens muss man u.a. auch den Aufruf des Eltern-Konstruktors anpassen. Wenigstens dies kann man sich ersparen, wenn man den Elternkonstruktoraufruf etwas anders löst:
$parentClass = get_parent_class($this);
if (method_exists($this, $parentClass))
$this->$parentClass();
Das ergibt dann auch keinen Fatal error, wenn die Elternklasse keinen Konstruktor besitzt.[*]
PHP 5:
Wie nachzulesen ist, werden geerbte Konstruktoren nicht automatisch aufgerufen. Zugriff auf die Elternklasse erhält man mit parent. Damit kann man normale Methoden wie auch den Konstruktor aufrufen.
Im Gegensatz zu PHP 4 reserviert PHP5 __construct als Namen für den Konstruktor. Hier lässt sich einfach
parent::__construct();
aufrufen. Wenn in der Elternklasse keine __construct-Methode zu finden ist, wird versucht diese in der Großeltern-Klasse aufzurufen usw. Wenn keine __construct-Methode gefunden werden kann, gibt es einen Fatal error. Ein PHP 4-Konstruktor (Konstrutor-Funktionsname = Klassenname) wird von parent::__construct() nicht aufgerufen.
echo "$verabschiedung $name";
[*] In kleinen, überschaubaren Projekten mag man sich diesen Aufwand sparen. In größeren, wo Klassen von Dritten geliefert werden, kann man mMn darüber nachdenken, das so zu verwenden.
hallo,
danke für die hilfe
gruß
jo