私はZF2を学び、アプリケーションを計画しているところです。
モジュールのいくつかのグループを持つ1つのアプリケーションが欲しいです。モジュールの各グループには、最大20以上のモジュールを含めることができます。
アプリ全体のモジュールの一意の名前を保証することはできませんが、モジュールグループ内での一意性を保証することはできます。
理想的には、ホスティングルーターを使用してモジュールグループにリクエストをルーティングします。
例: http: //admin.mysite.com/foo/ =>'Admin / Foo / Index / Index'、
http://special.mysite.com/foo/ =>'Special / Foo / Index / Index'
アイデア#1
モジュールグループごとに異なるmodule_pathを使用し、モジュールグループの周りのモジュールパスに名前空間を付けて、モジュールのクラスの一意性を判断したいと考えていました。ただし、module_autoloaderに送信されるモジュールは、渡される文字列の最初の部分にのみ注意を払うようです。
例えば
array('modules' => array(
'Admin\Admin','Admin\Bob','Admin\Users'
));
これは私が理解していない奇妙な振る舞いになります:
- 3つすべてが正しいモジュールコントローラーを指しますが、独自のビューではなく、Admin \ Admin(モジュールリストの最初にある)のビューをロードします。
- IE / users、Admin \ Users \ IndexControllerをロードしますが、ビュースクリプトAdmin \ Admin \ view \ admin \ Index \ index.phtml
templateInjecterにいくつかの小さな変更を加えることでこれを修正できましたが、面倒なようです。
アイデア#2
モジュール名をサブディレクトリの前に付けるだけです。
namespace AdminAdmin\Controller,
class IndexController {}
考え
- 名前空間はクラスプレフィックスよりも優先されます
- モジュールごとにハードコードされたルートを使用する代わりに、これを可能な限り自動化しようとしています
- 共通のCookiehost/memcacheやdbなどを介して認証用のモジュールを共有する複数のアプリケーションを使用することは理にかなっています...
- モジュールコントローラーなどのtreeRouteStack内のホスティングタイプルートを使用して、各モジュールを特定のサブドメインにルーティングします。
質問:
- この状況または同様の状況に対する彼らのベストプラクティスはありますか、またその理由は何ですか?