2013-10-27 128 views
0

我正在一個庫上工作,並使用它通過作曲程序包含的「其他」庫。所以在我的圖書館之一,我需要使用Buzz,所以我有奇怪的PHP命名空間問題

<?php 

namespace mynamespace; 

use Buzz\Browser, 
    Buzz\Client\Client; 

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

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

但我得到一個錯誤

Class 'mynamespace\Curl' not found 

現在我似乎沒有把握,爲什麼new Browser(new Curl());沒有引用Buzz\Browser。如果我將它更改爲新的\Buzz\Browser(new Buzz\Client\Client());,它工作正常。我檢查了作曲家,這很好,包括正確的東西。

回答

1

現在掌握新瀏覽器(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()); 
    } 
} 
+0

lol + _ +這是我在週末編碼時得到的,我的大腦顯然已經死亡。謝謝! – Steven

0

該消息並沒有說它找不到Buzz \ Browser。它實際上確實找到它。該消息說它無法找到mynamespace \ Curl - 這是因爲Curl駐留在頂層命名空間中,而不是在mynamespace中。

解決方案:

  • 要麼添加use Curl;的使用清單,或
  • 使用反斜槓實例時:new \Curl()

HTH我似乎並沒有