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; }