Vererbung - Was mache ich falsch?

meni

Mitglied
Hallo Leute!

Ich hab da nen Problem. Ich hab 2 Klassen. Die Klasse user und die Klasse news die von user abgeleitet wird, damit ich deren Methoden verwenden kann. Hier nochmal ein Auzug der Klassen:

PHP:
class user
{

        var $TemporaryData=array();
 
        //Konstruktor			
        function user()
        {
                //....
        }

        function add_TemporaryData($data)
        {
                $eintrag=array($data => $data);
                $this->TemporaryData[]=$eintrag;
        }

        function return_TemporaryData()
        {
                return $this->TemporaryData;
        }

}


class news extends user
{

        //Konstruktor			
        function news()
        {
                //....
               $this->add_TemporaryData('test');
        }

}


Jedoch ignoriert er den Aufruf $this->add_TemporaryData('test');. Sprich er setzt da nicht den Wert. Was mache ich falsch?

Danke schonmal,
meni
 
Also an deinem Beispiel ist, bis auf das es noch im Stile von PHP4 und nicht 5 ist, nichts falsch.

Hast du denn die Klasse auch instanziert, also den Aufruf "$news = new news();" bei dir irgendwo drin?

Nimm deinen Code und füge noch:

PHP:
<?php

// Instanz bilden
$news = new news();

// Rückgabewert von return_TemporaryData() ausgeben
print_r($news->return_TemporaryData());

?>

hinzu und du siehst das es funktioniert. Ich rate dir allerdings, dich bei OOP in PHP dann doch eher an PHP5 zu wenden.
 
Zuletzt bearbeitet:
OOP ist bei PHP5 wirklich angenehmer - bei meinem Praktikum werkeln wir an einem Portal mit OO@PHP4 *seuftz*
 
Danke für die schnelle Antwort!

Ja hab alles richtig instanziert. Hab aber auch schon meinen Fehler gefunden. Könnt mich echt !"$%& ;)

Hab andauernt $user->return_TemporaryData(); aufgerufen, also die Oberklasse, anstatt von der Unterklasse!

:-(
 
Kleiner Tipp am Rande:

error_reporting(E_ALL); und ein vernünftiger Debugger (Zend Studio hat einen, das kostet allerdings .. gibt auch kostenlose Varianten wie xdebug etc.) helfen bei solchen Problemen sehr gut ;-)
 
Zurück