2013-01-19 1 views
0

Je veux utiliser la fonction __autoload .. Par exemple, j'ai deux fichiers dans le même dossier:Comment utiliser autoload avec espace de noms en php?

index.php, MyClass.php

MyClass.php est quelque chose comme ceci:

// filename: MyClass.php 
namespace SomeNameSpace; 

class MyClass{ 
    public static function helloWorld(){ echo 'Hello'; } 
} 

Donc ce que je veux faire est d'utiliser __autoload pour charger cette classe. Mais quand je fais ceci:

function __autoload($className){ 
    include($className.'.php'); 
} 

chargement automatique ne fonctionne pas, car la classe est dans l'espace de noms.

Une aide?

exemple index.php:

//index.php 
//the autoload method above 
SomeNameSpace\MyClass::helloWorld(); 

Répondre

2

lorsque vous faites

include('$className'.'.php'); 

vous êtes en fait à la recherche d'un fichier appelé "classname.php de $". enlever les guillemets simples.

Essayez:

function __autoload($className){ 
    include(end(explode('\\', $className)) . '.php'); 
} 
+0

Désolé, il est une erreur que je fait poser la question. Le code est correct. Cela ne fonctionne toujours pas. –

+0

qu'est-ce que vous obtenez dans $ className? – galchen

+0

Il a essayé d'inclure SomeNameSpace \ MyClass.php mais MyClass.php n'est pas dans le dossier SomeNameSpace, il se trouve dans le même dossier. Donc, c'est le problème. –

Questions connexes