wahsaga: [PHP4] Vordefinierte Klasse Directory erweitern

Beitrag lesen

hi,

ich wollte mir gerne die vordefinierte Klasse Directory erweitern. (PHP 4.4.0)

Einfaches Beispiel:

  
<?php  
class myDir extends Directory {  
    function show() {  
        echo $this->path."<br>\n";  
        echo $this->handle."<br>\n";  
        echo $this->read()."<br>\n";  
        $this->close();  
    }  
}  
?>

Wenn ich mir davon nun aber eine neue Instanz erzeuge [1], und versuche die show()-Methode aufzurufen, bekomme ich die folgenden Notices/Warnings:

Notice: Undefined property: path in ... on line 4
Notice: Undefined property: handle in ... on line 5
Warning: read(): Unable to find my handle property in ... on line 6
Warning: close(): Unable to find my handle property in ... on line 7

Ich hätte eigentlich erwartet, dass die Deklaration meiner Klasse myDir mittels extends wie beim Erweitern einer "eigenen" Klasse auch die Eigenschaften und Methoden von Directory erbt - dem scheint aber wohl nicht so zu sein.

Am Anfang meiner eigenen Klasse
var $path, $handle;
einzufügen, bringt natürlich auch nichts - die Notices bzgl. der undefined properties verschwinden zwar, aber:

Warning: read(): supplied argument is not a valid Directory resource in ... on line 5
Warning: close(): supplied argument is not a valid Directory resource in ... on line 6

path und handle bekommen so beim Erzeugen der Objektinstanz auch keine Werte zugewiesen.

Mache ich etwas falsch - oder lässt sich die vordefinierte Klasse Directory so einfach nicht benutzen?

Klar, ich könnte mir noch einen Konstruktor dazubasteln:

function myDir($path) {  
    $x = dir($path);  
    $this->path = $x->path;  
    $this->handle = $x->handle;  
    unset($x);  
}

Damit würde es funktionieren ... aber das erscheint mir doch arg unsauber bis blödsinnig: Wenn ich im Konstruktor von myDir nochmal dir aufrufe - dann hätte ich es mir gleich sparen können, myDir von dir abzuleiten, und hätte es gleich prozedural programmieren können.

gruß,
wahsaga

[1] natürlich unter Angabe eines Pfad-Strings als Parameter.

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }