2013-02-26 50 views
0

由于外部库,我必须使用命名空间。由于在使用命名空间之前我没有使用命名空间,因此我的__autoload()无法使用。下面的代码将会说在自动加载器的全局上下文中使用命名空间

无法加载类Foo \ Bar \ NamespaceClass,请更新自动加载器!

我该如何解决这个问题? Foo类仅仅是外部库的一个包装。

// This is my autoloaded class file 
use Foo\Bar\NamespaceClass; 

class Foo 
{ 
    public function Bar() 
    { 
     $namespaceClass = new NamespaceClass(); 
    } 
} 

// This is a separate file calling my class "Foo" from global namespace 
$myAutoloadedClass = new Foo(); 
$myAutoloadedClass->Bar(); 
+0

你使用作曲家吗? – artragis 2013-02-26 13:00:23

+0

@artragis不,我不知道。 – musse1 2013-02-26 13:02:00

回答

1

我不认为你明白命名空间是如何工作的。我建议你阅读有关这方面的文章,例如this one on nettuts+

此外,我建议您使用the PSR-0 standards。几乎所有的第三方库都遵循这一点,并且他们带有一个可以直接使用的自动加载器。

最后,你说你使用了一个外部库。你看看composer?这是一个非常棒的工具,可以帮助您自动加载,更新和使用外部库。我建议你观看KnpUniversity的精彩视频:"The Wonderfull World of Composer"

0

你应该更新自动加载器。