Hey,
tk1234 : Daran liegt es nicht.
Ich habe einfach den PSR4-Autoloader von php-fig.org kopiert: https://www.php-fig.org/psr/psr-4/examples/. Der Prefix wird beim Erstellen des Pfads sowieso entfernt.
Nochmal ein projektbezogenes Beispiel
Dies ist die Ordnerstruktur zur Klasse Router die ich mit dem Autoloader laden möchte: app/core/Router.php
Nun steht in der Router.php dieser Namespace: namespace App\Core;
Wenn ich im Autoloader mir die $class direkt zu Beginn ausgeben lasse, wird einfach nur den Klassenname ausgegeben. In diesem Fall also Router. Ohne jeglichen Namespace. Wenn ich den Namespace nun in der index.php bei der Instanziierung der Klasse nochmal explizit angebe ändert sich auch nichts daran.
Irgendwie erkennt der Autoloader den Namespace nicht.
Wenn ich vom Autoloader folgenden Codeblock entferne kann ich mir zumindest den Pfad zur Datei ausgeben lassen, welche eingebunden wird, wenn diese existiert:
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
Der Pfad lautet: C:\xampp\htdocs\project/app/Router.php
Dann habe ich mir gedacht, dass es an dem direkten Aufruf über C:\ liegt und habe direkt http://localhost/project anstelle von __DIR__ bei $base_dir genommen und zum Testen auch den direkten Pfad angeben, damit nurnoch die $class angehangen werden muss: http://localhost/project/app/core/. Jetzt wird diese selbst damit immernoch nicht gefunden obwohl der Pfad, der eingebunden wird folgender ist: http://localhost/project/app/core/Router.php.
Mit einem relativen Pfad klappt es auch nicht.