kostenloser Webspace werbefrei: lima-city


Methode aus abstrakter "Elternklasse" in Kindklasse aufrufen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mmc

    mmc hat kostenlosen Webspace.

    Hallo,
    wie im Titel beschrieben, möchte ich in einer Klasse eine Methode einer abstrakten Klasse, die per extends eingebunden ist, ausführen.
    Abstrakte Klasse:
    abstract class ComponentAbstract
    {
        protected $JavaScriptCode = array();
        protected $StyleSheets = array();
        protected $JavaScripts = array();
        
        public function AddJavaScriptCode($Code)
        {
            $this->JavaScriptCode[] = $Code;
        }
    
        public function GetJavaScriptCode()
        {
            return $this->JavaScriptCode;
        }
    }

    class Component_xy extends ComponentAbstract
    {
       public function __toString()
       {
       }
    }

    In der Funktion __toString möchte ich jetzt die Methode AddJavaScriptCode() aufrufen, aber das geht weder mit $this->, noch mit parent::
    Geht das dann eigentlich überhaupt?
    Schöne Grüße,
    Simon
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Es müsste eigentlich funktionieren. Mir fällt kein offensichtlicher Fehler auf.
    Was gibt es denn für eine Fehlermeldung aus?
  4. Autor dieses Themas

    mmc

    mmc hat kostenlosen Webspace.

    Keine und eben genau das ist das Problem. Der ruft die Funktion auch gar nicht auf. Nicht einmal ein echo in einer Funktion in der Eltern-Klasse gibt der aus.
  5. Grundsätzlich funktioniert dein Vorhaben. Habs mit folgendem Code getestet:
    <?php
    
    abstract class ComponentAbstract
    {
        protected $JavaScriptCode = null;
        
        public function AddJavaScriptCode($Code)
        {
            $this->JavaScriptCode = $Code;
            echo '<div style="margin-left:40px;"><b>[ABSTRACT CLASS ComponentAbstract]</b><br/>adding value to local member variable $JavaScriptCode: ' . $Code . ' added!<br/><b>[ABSTRACT CLASS ComponentAbstract]</b></div>';
        }
    
        public function GetJavaScriptCode()
        {
            return $this->JavaScriptCode;
        }
    }
    
    class Component extends ComponentAbstract
    {
       public function __toString()
       {
    			echo '<div style="margin-left:40px;"><b>[CLASS Component]</b><br/>calling method "AddJavaScriptCode()" of abstract parent:<br/><br/> ';
    			echo $this->AddJavaScriptCode('TEST_JSCODE');
    			echo '<br/><b>[/CLASS Component]</b></div>';
          return '<br/>method __toString() called!';
       }
    }
    
    $test = new Component();
    
    echo '<p><b>[PROGRAM Main Call1]</b><br/>calling local method by using function "__toString()":<br/><br/> ';
    echo $test->__toString();
    echo '<br/><b>[/PROGRAM Main Call1]</b></p>';
    
    echo '<p><b>[PROGRAM Main Call2]</b><br/>protected member variable $JavaScriptCode of abstract class by using property "GetJavaScriptCode()":<br/> ';
    echo $test->GetJavaScriptCode();
    echo '<br/><b>[/PROGRAM Main Call2]</b></p>';
    
    ?>
    Ich hab es der Einfachheit halber ohne Arrays gemacht.

    Es stellen sich für mich folgende Fragen:
    - Übergibst du in deinem Code auch tatsächlich ein Array?!
    - Und lässt du dir auch ALLE Meldungen ausgeben?

    Beitrag zuletzt geändert: 3.5.2011 14:35:37 von wagnerm
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!