对于我的应用程序,我使用的是PSR-0命名空间。一切都很美好!
在我想使用Twig作为模板解析器之前,Twig使用PEAR伪名称空间。像Twig_Loader_Filesystem。
问题是,当我想在我的名字间隔应用程序中使用Twig时,如下所示:
<?php
namespace TactViewManager;
class ViewManager {
public function init()
{
$loader = new Twig_Loader_Filesystem($this->templatepath);
$this->twig = new Twig_Environment($loader);
}
}
?>
PHP会告诉我的自动加载器寻找一个名为TactViewManagerTwig_Loader_Filesystem
的类
如果没有调用类的PSR-0命名空间,我如何能够自动加载PEAR名称间隔样式类
我的自动加载器能够加载PEAR和PSR-0.
提前感谢!
这是因为您在TactViewManager
命名空间中。伪名称空间类实际上在全局名称空间中,所以你应该在它们前面加上来调用它们:
$loader = new Twig_Loader_Filesystem($this->templatepath);
如果前缀让你出错,你可以这样做:
namespace TactViewManager;
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);
}
}
试试这个:
$loader = new Twig_Loader_Filesystem($this->templatepath);
$this->twig = new Twig_Environment($loader);
这将告诉PHP在"根"级别强制查找名称空间\类,如果您的自动加载器设置为同时加载名称空间和常规PEAR约定类名,它就会工作。