Tim Bureck
Erfahrenes Mitglied
Hallo zusammen,
folgendes Problem: Ich habe eine Klasse, die ein Interface implementiert. Allerdings bekomme ich sobald ich eine Instanz dieser Klasse erstellen möchte den folgenden Fehler:
Soweit kein Problem, die Definitionen stehen ja auch nicht in derselben Datei und es gibt keine Includes. Allerdings habe ich eine Autoload-Funktion geschrieben, die auch funktioniert:
Woher weiß ich das? Vorher wurden auch schon Klassen mittels Autoloader geladen. Sobald ich aber an diese Stelle komme:
tritt der Fehler auf. Die Frage nun:
Warum klappt das Autoloading hier nicht?
PS: Die Datei Command.class.php existiert natürlich inklusive des Interfaces Command
folgendes Problem: Ich habe eine Klasse, die ein Interface implementiert. Allerdings bekomme ich sobald ich eine Instanz dieser Klasse erstellen möchte den folgenden Fehler:
Fatal error: Interface 'Command' not found
Soweit kein Problem, die Definitionen stehen ja auch nicht in derselben Datei und es gibt keine Includes. Allerdings habe ich eine Autoload-Funktion geschrieben, die auch funktioniert:
PHP:
function __autoload($className) {
searchClass(CSMTOOLS_DIR.'/library', $className);
}
function searchClass($dir, $className) {
if(!is_dir($dir)) {
return false;
}
$dirInputHandler = opendir($dir);
$dirContent = scandir($dir);
while(($dirElement = readdir($dirInputHandler)) !== false) {
if($dirElement != "." && $dirElement != ".."
&& $dirElement != ".svn"
&& is_dir($dir."/".$dirElement)) {
if (searchClass($dir."/".$dirElement, $className)) {
return true;
}
} elseif($dirElement != "." && $dirElement != "..") {
if(preg_match("/".$className.".class.php/",
$dir."/".$dirElement) > 0) {
require_once $dir."/".$dirElement;
return true;
}
}
}
closedir($dirInputHandler);
return false;
}
Woher weiß ich das? Vorher wurden auch schon Klassen mittels Autoloader geladen. Sobald ich aber an diese Stelle komme:
PHP:
abstract class BlockCommand implements Command {
...
}
tritt der Fehler auf. Die Frage nun:
Warum klappt das Autoloading hier nicht?
PS: Die Datei Command.class.php existiert natürlich inklusive des Interfaces Command