在自动加载器的全局上下文中使用命名空间

时间:2013-02-26 12:58:03

标签: php

由于外部库,我必须使用名称空间。由于在我意识到使用命名空间之前我没有使用过命名空间,因此无法使用我的__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();

2 个答案:

答案 0 :(得分:1)

我认为您不了解名称空间的工作原理。我建议你阅读有关它的文章,例如this one on nettuts+

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

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

答案 1 :(得分:0)

您应该更新自动加载器。