php命名空间与composer命名空间冲突

时间:2015-05-05 01:27:56

标签: php namespaces composer-php

在我的项目中,我有一个模块文件夹,可以在其中创建作曲家包 我正在制作的模块namespace是Modules \ View \ View for Modules / View / View.php文件

这是目录布局

Modules
-View
--View.php
--vendor
---autoload.php

当我在View.php中执行此操作时

public function __construct(){
    require_once __DIR__.'/vendor/autoload.php';
    $this->loader = new Twig_Loader_Filesystem('design');
    $this->twig = new Twig_Environment($this->loader);
}

我收到错误: 致命错误:第12行的Modules / View / View.php中找不到类'Modules \ View \ Twig_Loader_Filesystem'

所以我假设这是因为View.php文件有一个命名空间,我去了/Modules/View/vendor/composer/autoload_namespaces.php并更改了

'Twig_' => array($vendorDir . '/twig/twig/lib')

'Modules\View\Twig_' => array($vendorDir . '/twig/twig/lib')

它仍然不起作用,但是我仍然100%确定它是因为namespace因为如果你尝试将其加载到没有namespace的文件中它可以很快起作用当你添加它时会出现错误

1 个答案:

答案 0 :(得分:1)

Twig_Loader_Filesystem的命名空间是什么?

如果它没有命名空间,您可以使用根命名空间(\)加载它:

$this->loader = new \Twig_Loader_Filesystem('design');

您还可以使用use关键字:

namespace Modules\View;

use Twig_Loader_Filesystem;
use Twig_Environment;

class View {

  public function __construct(){
    require_once __DIR__.'/vendor/autoload.php';
    $this->loader = new Twig_Loader_Filesystem('design');
    $this->twig = new Twig_Environment($this->loader);
  }

}