什么是MVC / HMVC / PAC模式中URL结构的约定?

在MVC中,它就像
http://www.yourdomain.com/sampleController/sampleAction/
,如果你只打电话给
/sampleController/
然后
/sampleController/indexAction/
,如果你只是打电话/然后
/indexController/indexAction/
开火。 当然也有例外,但这或多或少都是惯例。 Zend有一些smilir。他们称之为模块。 它们基本上只是包含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是否与控制器直接匹配并附加IndexAction。 如果不是这种情况,我会寻找一个模块并猜测IndexController和IndexAction,如果不是这种情况,我会寻找一个名为index的模块。 但我想避免这个if / else的东西和文件系统访问。所以我想知道会议是怎么回事。或者甚至有一个?我找不到任何例子! 或者做一些像调用IndexAction,如果没有指定只是没有完成,但每个“短网址”必须在单独的路由逻辑中指定? 或者我完全误解了HMVC / PAC的概念? 仅供参考:我包含了php标签,因为我在php中使用我的框架,想知道php中的约定。我经常看到其他编程语言的差异。     
已邀请:
一个简单的(并且被广泛接受,我相信)惯例是存在/不存在尾随斜杠,其中A / B / C / D /意味着控制器D中的IndexAction和A / B / C / D意味着控制器C中的动作D 。     
没有官方的框架独立公约。 URI标识资源。某些框架如何将这些URI映射到内部应用程序函数取决于框架。例如,如果您想要执行REST,则根本不会执行任何操作,因为所使用的HTTP谓词隐含了操作,例如,
DELETE http://example.com/resourceName/1234
而在“路由”框架中的相同可能是类似的
POST http://example.com/resourceName/delete (with POST Body 1234)
将两个URI以某种方式映射到应用程序中知道如何删除的机制。     

要回复问题请先登录注册