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



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

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

/src

  • 搜索者.php

  • 身份验证器.php

作曲家.json

索引.php

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

namespace ApiReddit;

我的作曲家.json如下:

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

问题是现在我的搜索器.php以前工作的文件出现了一些问题。在代码的执行中,我有以下调用:

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

现在生成以下错误:

致命错误:在 中找不到类"ApiReddit\GuzzleHttp\Client"

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

您可以执行以下两项操作之一:

在搜索器文件中导入类时要明确

use GuzzleHttpClient;
class Searcher {
...
}

或在直接调用时转义类:

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

看起来问题是您使用的是相对命名空间。尝试更改:new GuzzleHttpClientnew GuzzleHttpClient 。问题应该得到解决。

相关内容

  • 没有找到相关文章

最新更新