0

ZF2に標準のアプリケーションモジュールがあります。デフォルトで設定されており、何も変更していません。私はいくつかのものを追加しました:

module/
  Application/
    src/
      Application/
        Entity/
          Product/
            **Product.php**        
        Controller/
          **IndexController.php**

製品.php

namespace Application\Entity;

class Product
{

}

IndexController.php

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Entity\Product;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {       
        $product = new Product();   
    }
}

次のエラーが表示されます。

Fatal error: Class 'Application\Entity\Product' not found in \module\Application\src\Application\Controller\IndexController.php on line 20

同じ名前空間を使用していますが、認識されません。なんで?

PS: Product.php を次のように変更する場合:

namespace Application\Entity\Product;

class Product
{

}

次に、IndexController.php で次のコードが機能します。

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Entity\Product\Product;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {       
        $product = new Product();   
    }
}

更新 PSR-0標準に従わなければならないことがわかりましたが、少し説明していただけますか? また、この動作を変更できますか? 良いと言っているのではなく、実際にどのように機能するかを知りたいだけです。たとえば、Application\Entity\Product を使用したいのですが、Product クラスは /Application/Entity/Product/Product.php にあります。前もって感謝します!

4

2 に答える 2

1

クラスProductを名前空間Application\Entityに配置すると、ディレクトリ構造は次のようになります

module/
  Application/
    src/
      Application/
        Entity/
          **Product.php**

PSR-0も参照

于 2013-11-12T07:43:08.133 に答える