Hallo Leute,
ich kennt doch sicherlich das Problem beim Autoloader mit langen kalssen namen etwa so:
$beispiel = new pfad_zur_klasse_in_einem_ordner_testklasse();
mich hat halt das ganze ein wenig gestört und ich habe eine klasse geschrieben mit der ich die Ordner vorher definiere und danach include. Das ganze sieht dann so aus:
PHP:
class AutoLoader {
private static $includeDir;
private static $includeFile;
public static function import($dir) {
self::$includeDir[] = $dir;
}
public static function load($className) {
foreach(self::$includeDir as $directories) {
if(file_exists($directories.$className.'.class.php')) {
self::$includeFile = $directories.$className.'.class.php';
}
}
return self::$includeFile;
}
}
?>
und die Anwendung funktioniert so:
PHP:
// autoloader klasse inlcude require_once 'pfad/zur/autoloader/AutoLoader.class.php'; //Bestimmen in welchen Ordnern sich meine klassen befinden AutoLoader::import('../../foo/'); AutoLoader::import('../../bar/foo2/'); //Autoload function anwenden function __autoload($className) { require_once AutoLoader::load($className); } $foo = new Foo(); echo $foo->methode();
Somit brauche ich nicht mehr den pfad in dem klassen namen mit anzugeben. nun meine Frage wäre ob es denn nicht zu viel ressourcen verbraucht, denn jedes mal beim aufruf einer klasse werden alle zu includenden ordner durchsucht ob da eine klassen datei exestiert und wenn die exestiert, wird die included.
ich schätze mal bei sagen wir 10 ordnern muss es doch lange dauern bis eine klasse included wird oder?
ich habe das bis jetzt getestet aber meine klassen waren auch klein und immer nur mit test ausgaben desswegen kann ich das von vornerein nicht beurteilen aber ihr habt da bestimmt mehr erfahrung
MFG