0

我正在开发一个库,并且我有它使用的“其他”库,这些库通过作曲家包含在内。所以在我的一个图书馆中,我需要使用 Buzz,所以我有

<?php

namespace mynamespace;

use Buzz\Browser,
    Buzz\Client\Client;

class Stuff
{
    public function stuff()
    {
        $stuff = new Browser(new Curl());
    }
}

Buzz 是https://github.com/kriswallsmith/Buzz

但我收到一个错误

Class 'mynamespace\Curl' not found

现在我似乎不明白为什么new Browser(new Curl());不引用Buzz\Browser. 如果我将其更改为新的\Buzz\Browser(new Buzz\Client\Client());,它可以正常工作。我检查了作曲家,一切都很好,并且正确地包含了东西。

4

2 回答 2

1

现在我似乎不明白为什么 new Browser(new Curl()); 没有引用 Buzz\Browser

这是。该类Curl未在您的命名空间中定义,您需要另一条use语句来导入Buzz\Client\Curl

<?php
namespace mynamespace;

use Buzz\Browser,
    Buzz\Client\Curl;

class Stuff
{
    public function stuff()
    {
        $stuff = new Browser(new Curl());
    }
}

或者,如果Curl是根命名空间中的一个类,您可以在它前面加上一个反斜杠并删除 import 语句。

<?php
namespace mynamespace;

use Buzz\Browser;

class Stuff
{
    public function stuff()
    {
        $stuff = new Browser(new \Curl());
    }
}
于 2013-10-27T19:53:51.720 回答
0

该消息没有说它找不到 Buzz\Browser。它确实找到了它。消息说它找不到 mynamespace\Curl - 这是因为 Curl 驻留在顶级命名空间中,而不是在 mynamespace 中。

解决方案:

  • 要么添加use Curl;到使用列表中,要么
  • 实例化时使用反斜杠:new \Curl()

高温高压

于 2013-10-27T19:50:50.050 回答