2017-03-08 99 views
-1

我想在ZF2中的供應商文件夾內創建庫。下面是結構:Zf2擴展類給出錯誤類未找到

/Vendor 
    /Mylib 
      /Mylib.php 
      /MylibStore.php 
      /MylibError.php 
      .... 

我已經宣佈了同樣的lib中Applicaiotion/Module.php

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       'Mylib' => __DIR__ . '/../../vendor/Mylib', 
      ), 
     ), 
    ); 
} 

現在我打電話MYLIB類控制器,它是工作,但,當我試圖實例其他類在控制器中它給出錯誤。下面是代碼卡:

Mylib.php

namespace Mylib; 
abstract class Mylib 
{ 

MylibStore.php

namespace MylibStore; 
use \Mylib\MylibError; 
class MylibStore extends MylibError 
{ 

MylibError.php

namespace MylibError; 
class MylibError 
{ 

我收到以下錯誤:

Fatal error: Class 'MylibStore\MylibError' not found in C:\xampp\htdocs\coxaxle\vendor\Mylib\MylibStore.php on line 5

請讓我知道我在做什麼錯了?我該如何解決這個問題?

回答

1

問題出現在您的名稱空間中。 Mylib目錄內的所有文件應該具有相同的namespace - Mylib
這就是爲什麼只有Mylib類的作品,因爲它有正確的namespace

如果你把你的類放在不同的目錄中,那麼你必須更新關於這個目錄的命名空間。

例子:

/Vendor 
    /Mylib 
      /Service 
       /MylibService.php 
      /Mylib.php 
      .... 

Mylib應該有命名空間Mylib
MylibService應該有命名空間Mylib\Service

+0

我有一個問題...如果我可以得到同樣的命名空間中的所有文件,然後它會不會產生任何衝突?像相同的命名空間相同,爲相同的類名提供錯誤。 –

+0

只要你的名字不同,不會有任何衝突 – SzymonM

+0

好的,謝謝。我嘗試了你的建議和其卓越的工作... –