MVC では、そのようなもので、すぐに呼び出すと、/ をhttp://www.yourdomain.com/sampleController/sampleAction/
呼び出すだけで発火します。/sampleController/
/sampleController/indexAction/
/indexController/indexAction/
もちろん例外もありますが、それは多かれ少なかれ慣例です。
Zend には何かスマイルがあります。彼らはそれをモジュールと呼んでいます。
これらは基本的に、それぞれに MVC ロジックを含む単なるフォルダーです。だからあなたは呼び出すことができます/Module1/Controller/Action/
。呼び出すだけで発火します/Module1/
。/Module1/indexController/indexAction/
巨大なプロジェクトの場合はさらに構造化できるので便利ですが、小さなプロジェクトの場合は面倒です。
だから私はHMVC/PACのアイデアが本当に好きで、私のフレームワークに取り入れたいと思っています。
基本的に Zend と同じですが、ネストされたモジュールが無制限であることを正しく理解できましたか?
たとえば、私は持ってい/sub-project/sub-sub-project/controller/action/
ますか?
また、/A/B/C/D/ と呼ぶ場合の規則は何ですか。
モジュールA/BのコントローラCのアクションDということですか?または、モジュール A/B/C のコントローラー D の IndexAction ですか?
例に挙げてみましょう:
Content
ToplistController
AdministrateAction
IndexAction
ContentController
ToplistAction
Users
Chat
RoomController
IndexAction
ここで URL を呼び出します/content/toplist/
。
URL については、/users/chat/room/?room=1
可能性が 1 つしかないため、この例で明らかです。しかし、それは正しいものですか?適切なコントローラーで適切なアクションを一意に指定する規則はありますか?
私の最初のアイデアは、「できるだけ推測しない」ことでした。
そのため、最初に URL がアクションに直接一致するかどうかを確認します。
また、インデックス アクションで同じように呼び出されたコントローラー/モジュールがある場合、「より高いレベル」での一致が存在する場合は起動できません。
そうでない場合は、URL がコントローラーと直接一致するかどうかを確認し、IndexAction を追加します。
そうでない場合は、モジュールを探して IndexController と IndexAction を推測し、そうでない場合は index というモジュールを探します。
しかし、この if/else とファイル システム アクセスは避けたいと思います。それで、私はコンベンションがどうなっているのか疑問に思いました。それとも1つでもありますか?例が見つかりませんでした!
または、何も指定されていない場合に IndexAction を呼び出すようなことはありませんが、すべての「短い URL」を個別のルーティング ロジックで指定する必要がありますか?
または、HMVC/PAC の概念を完全に誤解していますか?
参考までに: 私は php タグを含めました。なぜなら、私は自分のフレームワークを php で実行していて、php の規則について知りたいからです。他のプログラミング言語の違いをよく見てきました。