Problem mit Vererbung und Klassen/Funktionen

daddz

Mitglied
Hallo!

Ich stehe vor einem kleinen Problem, dessen Lösung wahrscheinlich total simpel ist, aber momenten steh ich echt auf dem Schlauch.

Also ich habe eine Klasse Foo. Eine Klasse Bar und die Klasse FooBar.

PHP:
class Foo {

    var $bar;

    function Foo($bar) {

        $this->bar = $bar;

    }

}
Bei $bar handelt es sich um eine Instanz der Klasse Bar.
PHP:
class Bar {

    function Bar() {}
    
    function machWas() {}

}
Ebenso hier.
PHP:
class FooBar extends Foo {
       
    function FooBar($bar) {

        parent::Foo($bar);

    }

    function TolleFunktion() {

        $this->bar->machWas();

    }

}
Wenn ich nun die Funktion TolleFunktion() der Klasse FooBar() aufrufe bekomme einen Fehler der besagt, dass $this->bar kein Objekt ist obwohl es doch eine Instanz der Klasse Bar sein sollte.
PHP:
$bar = new Bar();
$foobar = new FooBar($bar);
$foobar->TolleFunktion();

Wie kann ich dieses Problem lösen?
Es gibt bestimmt eine einfachere Lösung, aber ich komm momentan einfach nicht drauf.

Ich hoffe ihr habt bei diesen vielen Foo und Bar mein Problem verstanden. :-)


Edit:
Ich sehe gerade, dass mein Beispiel sogar funktioniert...komischerweise will es in der "richtigen" Anwendung nicht funktionieren.
In der Anwendung ist $bar eine Instanz der ADOdb-Lite.


greetz
daddz
 
Wollt ich doch sagen, dass das Ganze funktioniert. Kannst du denn mal bitte, die benannte Klasse posten und nicht das Testkript, weil so können wir leider nicht sehen, wo evtl der Fehler ist!
 
Das ganze hat sich erledigt.

Es lag daran, dass ich etwas nicht auskommentiert habe. :suspekt:

Naja...hab ich mir umsonst so viel Mühe für den Beitrag und das Beispiel gegeben. :P

Aber nun eine andere Frage.

Lässt sich, dass was ich oben gemacht habe auch eleganter lösen oder ist das so in Ordnung?

greetz
daddz
 
daddz hat gesagt.:
[...]Lässt sich, dass was ich oben gemacht habe auch eleganter lösen oder ist das so in Ordnung?[...]
Eleganter? Hmm kommt immer ganz drauf an denke ich, man hätte jetzt aus Bar die Mutterklasse machen können und Foo von Bar ableiten können und FooBar in dem Fall von Foo. Hat meiner Ansicht den Vorteil, das mann in PHP 5 die genau sagen kann, ob die Methoden nur von der Klasse oder auch von Objektinstanz genutzt werden dürfen! Was bei deinem Beispiel nicht so einfach in Bezug auf die Klasse Bar geht.
 
Das ganze basiert aber vorerst auf PHP4 und somit fällt das unter den Tisch.

Trotzdem Danke!

Falls jemandem dazu noch was einfallen sollte, dann her damit! ;)

Ansonsten ist dieses Thema erledigt.

greetz
daddz
 
Eine Frage noch zu Keyword "parent". Wir wissen, dass es ab PHP4 zur Verfügung steht, aber nicht, ab welcher genau. Momentan gehen wir von PHP4.0 aus. Oder wurde das erst später eingeführt?
 
Zurück