PHP:在PSR-0名称空间类中自动加载PEAR名称空间类冲突



对于我的应用程序,我使用的是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约定类名,它就会工作。

相关内容

  • 没有找到相关文章

最新更新