命名空间中断对Composer导入的类的调用

时间:2017-01-24 21:43:57

标签: php namespaces composer-php

我目前正在尝试将我通过Composer创建的一些类自动加载到我的一些旧代码中。

我当前的文件夹结构非常简单,只需以下内容:

/ SRC

  • Searcher.php

  • Authenticator.php

composer.json

的index.php

我有更多文件,但这些是重要的。然后我将以下内容添加到我的两个类中:

namespace ApiReddit;

我的composer.json如下:

{
    "require": {
            "guzzlehttp/guzzle": "^6.2",
            "adoy/oauth2": "^1.3",
            "twig/twig": "^1.30"
    },
    "autoload": {
      "psr-4": {"ApiReddit\\": "src/"}         
    }

问题是,现在我以前工作的Searcher.php文件存在一些问题。在执行代码时,我进行了以下调用:

$client = new GuzzleHttp\Client([
       'headers' => ['User-Agent' => 'testing/1.0'],
       'verify' => false]);
}

现在生成以下错误:

致命错误:

中找不到“ApiReddit \ GuzzleHttp \ Client”类

这意味着使用新命名空间会破坏我对其他编写器加载的包的调用。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

你可以做以下两件事之一:

要么明确导入Searcher文件中的类

use GuzzleHttp\Client;

class Searcher {

...

}

或在直接致电时逃离课程:

$client = new \GuzzleHttp\Client([
       'headers' => ['User-Agent' => 'testing/1.0'],
       'verify' => false]);
}

答案 1 :(得分:1)

看起来问题是您正在使用相对命名空间。尝试将new GuzzleHttp\Client更改为new \GuzzleHttp\Client。问题应该解决。