jo: Konstrukor der Parent klasse ansprechen = wie ?

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

  1. Huhu jo,

    wie kann ich auch den Konstruktor der Elternklasse aufrufen ?

    Welche PHP-Version ist es denn?

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
  2. Hallo,

    ich habe eine klasse mit "class calContent extends calendar"

    calendar::methode()

    Grüße aus Moabit
    Patient

  3. 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...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
  4. 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.

    1. hallo,

      danke für die hilfe

      gruß

      jo