在 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
,这个例子很明显,因为只有一种可能性。但它是正确的吗?是否有约定在正确的控制器中唯一地处理正确的操作?
我的第一个想法是“尽可能少地猜测”。
所以我首先检查 url 是否直接匹配到一个动作。
如果有一个控制器/模块与索引操作调用相同,那么如果存在“更高级别”的匹配项,它就无法触发。
如果不是这种情况,我会查看 url 是否直接匹配控制器并附加 IndexAction。
如果不是这种情况,我会寻找一个模块并猜测 IndexController 和 IndexAction,如果不是这种情况,我会寻找一个名为 index 的模块。
但我想避免这种 if/else 的东西和文件系统的访问。所以我想知道公约是如何的。或者甚至有一个?我找不到任何例子!
或者,如果没有指定只是没有完成但必须在单独的路由逻辑中指定每个“短 url”,是否会调用 IndexAction?
还是我完全误解了 HMVC/PAC 的概念?
仅供参考:我包含了 php 标记,因为我在 php 中做我的框架并且想了解 php 中的约定。我经常看到其他编程语言的差异。