对于我的应用程序,我使用的是PSR-0命名空间。一切都很美好!
在我想使用Twig作为模板解析器之前,Twig使用PEAR伪命名空间。像Twig_Loader_Filesystem一样。
问题在于,当我想在我的名称间隔应用程序中使用Twig时:
<?php
namespace Tact\ViewManager;
class ViewManager {
public function init()
{
$loader = new Twig_Loader_Filesystem($this->templatepath);
$this->twig = new Twig_Environment($loader);
}
}
?>
PHP会告诉我的自动加载器查找名为Tact\ViewManager\Twig_Loader_Filesystem
如何在没有调用类的PSR-0命名空间的情况下设置自动加载PEAR名称间隔样式类?
我的自动加载器能够加载PEAR和PSR-0 ..
提前致谢!
答案 0 :(得分:2)
这是因为您位于Tact\ViewManager
命名空间中。
伪命名空类实际上在全局命名空间中,
所以你应该在\
前面加上它们来称呼它们:
$loader = new \Twig_Loader_Filesystem($this->templatepath);
如果\
前缀有问题,你可以这样做:
namespace Tact\ViewManager;
use Twig_Loader_Filesystem;
use Twig_Environment;
class ViewManager {
public function init()
{
$loader = new Twig_Loader_Filesystem($this->templatepath);
$this->twig = new Twig_Environment($loader);
}
}
答案 1 :(得分:0)
试试这个:
$loader = new \Twig_Loader_Filesystem($this->templatepath);
$this->twig = new \Twig_Environment($loader);
这将告诉PHP在“root”级别强制命名空间\类查找,如果您的自动加载器设置为加载命名空间和常规PEAR约定类名,它将起作用。