質問

私は、デフォルトのZend Frameworkのアプリでdoctrine2サンドボックスを統合しようとしています。私は、コントローラに名前空間を使用しようとすると、私はエラー

「無効なコントローラクラス( 『IndexControllerを』)」を取得します

この作品ます:

use Entities\User, Entities\Address;


class IndexController extends Zend_Controller_Action
{
...
}

これはしていません(ただし、してください):

namespace Entities;


class IndexController extends \Zend_Controller_Action
{
...
}
役に立ちましたか?

解決

あなたの最初の例では、コントローラに名前空間をインポートしています。あなたの2番目の例では、名前空間にコントローラを割り当てるされます。

名前空間をインポートするユーザーに自分の完全修飾クラス名をせずに参照クラスになります。

new \Entities\User() // without import
new User() // with import
あなたのコントローラに名前空間を割り当てると、実際にあなたのクラスの完全修飾名を変更します。

new \IndexController() // without namespace
new \Entities\IndexController() // with namespace

(名前空間内のクラスは常に「使用」になくても、その同じ名前空間内の他のクラスを参照することができます。私はそれはあなたが使用オプション2にしようとしていた主な理由だった疑いがある)。

Zend Frameworkの1.10は、まだ名前空間無知です。 URLを解析し、コントローラをロードしようとすると、それだけで\IndexControllerのデフォルトのグローバル名前空間に見て見て、それがユーザー定義の名前空間(\Entities\IndexController)に割り当てられていますという考えを持っていません。

私の推薦は、ZFのコントローラを操作する場合、それらに割り当てない名前空間を行うということです。作品の罰金をインポートします。私たちは、完全な名前空間のサポートのためにZF 2.0まで待たなければならないでしょう。

他のヒント

スルーマニュアルに行くと、いくつかのを読んだ後このページでは、それはそれでを思わをPHPは、あなたが宣言し、あなたの2番目の構文を使用して名前空間を周囲に構築したいとき。だから、

のようなオブジェクトを作成します
Entities\IndexController 

そのようZendのではもう見られない。

これらのサイトによると、あなたはそれを名前空間をインポートして使用するために使用を使用する必要があります。

ザッツなぜそれがあなたの最初の例ではなく、あなたの二番目に働きます。

希望私は右だと、これは役立ちます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top