Namespaces in Kombination mit __autoload

ComFreek

Mod | @comfreek
Moderator
Hallo an alle,

ich habe ein Problem mit der __autoload-Funktion und Namespaces.
Die Datei wird zwar eingebunden, aber die Klasse wird wegen den Namespaces nicht gefunden. Wenn ich diese entferne, klappt alles!

Da ich eine Art Bibliothek/Framework entwickle, ist die Ordnerstruktur anders:
Code:
|
|--uselib.php   // Hier werden die Klassen benutzt, Fehler!
|
|--MyLib
   |
   |--Sub1
      |
      |--TClass.php
   
   |--MyLib.php   // Definiert die __autoload()-Funktion

Die MyLib.php sieht so aus:
PHP:
namespace MyLib;

function __autoload($classname)
{
  if (file_exists(__DIR__."/Sub1/".$classname.".php"))
  {
    require_once(__DIR__."/Sub1/".$classname.".php");
  }
  else
  {
     exit("FILE NOT FOUND IN __autoload ($classname)");
  }
}
Die TClass sieht so aus:
PHP:
namespace MyLib\Sub1;
class TClass
{
  ...
}


Nun jetzt die Datei, in der der Fehler auftritt, uselib.php:
PHP:
require_once("MyLib/MyLib.php");
use MyLib\Sub1;

$MyClass = new TClass();   // <-- Fehler!
Der Fehler liegt eindeutig bei den Namespaces.
Folgende Varianten funktionieren auch nicht:
PHP:
$MyClass = new MyLib\Sub1\TClass();  // Dann findet __autoload die Datei nicht

Vielen Dank im Voraus für jeden Tip!!
 
Zurück