final class ModuleManager {
public $dirhandle = NULL; # <=== Mit dem wird __get für diese Variable nie aufgerufen!
const MODULEDIR = 'modules/';
const MODULEEXT = '.mod.php';
public function __get($nm) {
print 'Call _get !';
if($nm == 'dirhandle' {
$this->dirhandle = dir(self::MODULEDIR);
return $this->dirhandle;
}
}
public function CountAllModules() {
$i = 0;
var_dump($this);
$this->dirhandle->rewind();
while (false !== ($entry = $this->dirhandle->read())) {
if(substr($entry, 0, -(count(self::MODULEEXT))) == self::MODULEEXT AND is_file($entry)) {
$i++;
}
}
return $i;
}
}
Rufe ich nun die Methode CountAllModules auf, die wiederum auf die Variable "dirhandle" zugreift, so wird die Funktion __get nicht aufgerufen. Auch wenn ich den Aufruf ausserhalb des Objektes mache: __get will von allem nichts wissen.
Weiss wer warum?
Edit: Die im PHP-Manual stehende Klasse "Setter" gibt die gleiche Ausgabe bei mir. Und natürlich hab ich PHP5 (5.2.0 oder so)
Edit: Hat sich erledigt!
Der Fehler lag im setzen von "dirhandle" auf NULL im Kopf des Objektes. Autsch.