Zugriff auf Methode einer Großelternklasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zugriff auf Methode einer Großelternklasse

    Ich habe schon einige Kollegen zu dem Thema befragt und alle sagten, das geht nicht. Aber vielleicht kennt hier doch noch jemand eine Lösung dafür.

    Also ich habe folgenden Grundaufbau
    PHP-Code:
    class Blubb extends Blubber
    {
      public function 
    doSomething()
      {
        
    parent::doSomething();
        ...
      }
    }
    class 
    Blubber
    {
      public function 
    doSomething()
      {
        ...
      }

    Dabei handelt es sich um Daten aus einem Core, die definitv nicht geändert werden sollen. Jetzt muss ich die Methode doSomething aus der Klasse Blubb in einer "Erweiterung" überschreiben. Ist ja kein Problem, geht mit
    PHP-Code:
    class Bla extends Blubb
    {
      public function 
    doSomething()
      {
        ...
      }

    Aber wie rufe ich aus der Methode doSomething der Klasse Bla die Methode doSomething der Klasse Blubber auf? Ein Hinweis: die Methodennamen in der Klasse Blubb und Blubber sind identisch, haben aber unterschiedliche Funktionalitäten. Ein
    PHP-Code:
    class Bla extends Blubb
    {
      public function 
    doSomething()
      {
        
    parent::parent::doSomething();
      }

    funktioniert natürlich nicht. Gibt es da irgendeine Möglichkeit? Ach ja, sollte irgend jemand von einem Design-Fehler reden, ist nicht meine Schuld, liegt an dem Shopsystem, das ich gerade überarbeiten muss.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    PHP-Code:
    class Bla extends Blubb 

      public function 
    doSomething() 
      { 
        
    Blubber::doSomething(); 
      } 

    Der einzig logische Weg...
    Das sieht aber total statisch aus. PHP4 wirds wegstecken, die neueren werden wohl schreien (aber es trozdem tun)
    *ungetestet*

    Eine Extrarunde über Reflection möchtest du nicht drehen, oder?
    KA ob es damit möglich ist. Ich bin noch nie auf eine soche *** Idee gekommen.
    Wir werden alle sterben

    Kommentar


    • #3
      Zitat von combie Beitrag anzeigen
      PHP-Code:
      class Bla extends Blubb 

        public function 
      doSomething() 
        { 
          
      Blubber::doSomething(); 
        } 

      Der einzig logische Weg
      Jepp, funktioniert. Ich habe mit so was auch noch nicht zu tun gehabt. Aber es klappt und das ist wichtig.

      Danke
      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Nur für den Hintergrund, so wirds in C++ gemacht. Da gibt es auch kein parent, self, etc.

        Kommentar

        Lädt...
        X