Methode aus abstrakter "Elternklasse" in Kindklasse aufrufen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abstract
array
aufrufen
ausgeben
code
einfachheit
eltern
fehlermeldung
folgende fragen
folgendem code
funktion
funktionieren
getestet code
meldung
methode
null
offensichtlicher fehler
stellen
test
vorhaben
-
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
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Es müsste eigentlich funktionieren. Mir fällt kein offensichtlicher Fehler auf.
Was gibt es denn für eine Fehlermeldung aus? -
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.
-
Grundsätzlich funktioniert dein Vorhaben. Habs mit folgendem Code getestet:
Ich hab es der Einfachheit halber ohne Arrays gemacht.<?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>'; ?>
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage