Guten Tag liebe Community,
ich habe folgendes Problem und zwar habe ich mir einen Namepace freundlichen Autoloader gebastelt der auch soweit funktioniert, außer wenn ich ihn in Unterordner einbinde.
Autoloader:
[PHP]class Autoloader {
const BASE = __DIR__;
const FILE_EXTENSION = '.php';
const DS = DIRECTORY_SEPARATOR;
public static function autoload($class) {
$uri = str_replace("test\\", "", strtolower(str_replace("\\", self::DS, $class))) . self::FILE_EXTENSION;
if(file_exists($uri)) {
require_once($uri);
}
}
}
spl_autoload_register(‚Autoloader::autoload‘);[/PHP]
Verzeichnisstruktur:
[ul]
[li]Projekt[/li][LIST]
[li]administrator[/li][LIST]
[li]index.php[/li][/ul]
[li]library[/li]
[li]index.php[/li][/LIST]
[/LIST]
Im Verzeichnis „library“ liegen meine Klassen. Wenn ich den Autloader nun in die index.php im root Verzeichnis einbinde, funktioniert alles einwandfrei. Binde ich jedoch meinen Autoloader in meine index.php im Verzeichnis administrator ein, kann die Klasse nicht geladen werden. Anbei nochmal der Quellcode beider PHP-Dateien.
root index.php
[PHP]<?php
namespace Test;
use Test\Library\Klasse;
require_once(‚init_autoloader.php‘);
$test = Klasse::testFunktion();
?>
[/PHP]
administrator index.php
[PHP]<?php
namespace Test\Administrator;
use Test\Library\Klasse;
require_once(DIR . ‚/…/init_autoloader.php‘);
$test = Klasse::testFunktion();
?>[/PHP]
Fehler:
Fatal error: Class ‚Test\Library\Klasse‘ not found in D:\Programme\xampp\htdocs\test\administrator\index.php on line 18
Hoffe ihr könnt mir helfen. Bin ratlos oder dumm.