Roni: Methode aus der Vaterklasse der Vaterklasse aufrufen, wie?

Hallo Zusammen, ich habe folgendes Problem:
z.B:

class a
{
   function halloWorld()
   {echo "HALLO";}
}

class b extends a
{
   function halloWorld()
   {echo "NIX DA";}
}

class c extends b
{
   //Hier möchte ich gerne die Methode halloWorld() aus der
   //class a aufrufen ohne den classennamen zu verwenden.
}

Mit
parent::halloWorld();
wird NIX DA ausgegeben. Ich möchte allerdings als Ausgabe HALLO
parent::parent::halloWorld() geht nicht.

Was kann ich tun?

vielen Dank im vorraus

  1. Hallo,

    Mit
    parent::halloWorld();
    wird NIX DA ausgegeben. Ich möchte allerdings als Ausgabe HALLO
    parent::parent::halloWorld() geht nicht.

    Was kann ich tun?

    [Klassenname]::halloWorld(), also a::halloWorld()?

    Gruß, Frank.

    1. Hallo,

      [Klassenname]::halloWorld(), also a::halloWorld()?

      Eben dies wollte ich nicht.
      Gibt es kein konstrukt das sowas vermag?

      1. Hallo!

        [Klassenname]::halloWorld(), also a::halloWorld()?

        Eben dies wollte ich nicht.

        Hhhmm. Ich kann mir jetzt keine Problemstellung vorstellen, in der ich nicht weiß, wie der Klassenname des Großvaterobjektes ist.

        Warum kannst du dieses Konstrukt nicht verwenden. Schildere mal ein wenig ausführlicher was du eigentlich realisieren möchtest.

        mfg
          frafu

        1. [Klassenname]::halloWorld(), also a::halloWorld()?

          Eben dies wollte ich nicht.

          Eben dies habe ich jetzt aber doch gemacht.

          Hhhmm. Ich kann mir jetzt keine Problemstellung vorstellen, in der ich nicht weiß, wie der Klassenname des Großvaterobjektes ist.

          Ich wollte es nur elegant lösen und dachte man könne mit parent::parent:: oder so, die Vaterklasse überspringen und den Großvater direkt ansprechen.
          Ich wollte diese Klasse komplett wegschalten weil sie ein constructor enthielt der mir stets ein strich durch die ´Rechnung machte. Jetzt habe ich einfach auch den Konstruktor überschrieben.

          vielen Dank für die schnelle Hilfe

  2. Hallo!

    Das sollte das Problem lösen:

    class c extends b
    {

    function halloWorld(){
           a::halloWorld();
         }

    }

    mfg
      frafu

    1. Hallo!

      class c extends b
      {
           function halloWorld(){
             a::halloWorld();
           }

      }

      Es ist aber so so, dass auch andere Klassen von den Klassen a, b und c abgeleitet sind. Diese hier nicht erwähnten Klassen benötigen die Methode halloWorld() so wie si in ihrer jeweiligen Klasse implementiert wurde.

      1. Hallo!

        Es ist aber so so, dass auch andere Klassen von den Klassen a, b und c abgeleitet sind. Diese hier nicht erwähnten Klassen benötigen die Methode halloWorld() so wie si in ihrer jeweiligen Klasse implementiert wurde.

        Ich sehe da kein Problem. Dann musst du einfach in den anderen Klassen, die Methode halloWorld() spezifizieren. Oder übersehe ich noch irgendwas?

        mfg
          frafu

  3. echo $begrüßung;

    parent::parent::halloWorld() geht nicht.

    Von hinten durch die Brust ins Auge:

      
    class c extends b {  
      function x() {  
        parent::halloWorld();  
        $parent = get_parent_class(__CLASS__);  
        $grandpa = get_parent_class($parent);  
        call_user_func(array($grandpa, 'halloWorld'));  
      }  
    }  
      
    c::x();  
    
    

    echo "$verabschiedung $name";