2017-03-08 16 views
-1

ZF2のベンダフォルダ内にライブラリを作成しようとしています。ここ構造は次のとおりです。エラークラスを与えるクラスを拡張するZf2が見つかりません

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

私はApplicaiotion/Module.phpで同じlibが宣言している:

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

、ありがとうございます。私はあなたの提案とその優れた作業を試みた... –

関連する問題