The*_*can 5 php model-view-controller design-patterns pac hmvc
在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
Run Code Online (Sandbox Code Playgroud)
我现在调用URL /content/toplist/.
对于URL,/users/chat/room/?room=1该示例使其显而易见,因为只有一种可能性.但这是正确的吗?是否存在在右侧控制器中唯一地添加正确操作的约定?
我的第一个想法是"尽量少猜".
所以我首先检查网址是否与某个动作直接匹配.
如果存在一个带有索引动作的控制器/模块,如果存在"更高级别"的匹配,则无法触发.
如果不是这种情况,我会看到url是否与控制器直接匹配并附加IndexAction.
如果不是这种情况,我会寻找一个模块并猜测IndexController和IndexAction,如果不是这种情况,我会寻找一个名为index的模块.
但我想避免这个if/else的东西和文件系统访问.所以我想知道会议是怎么回事.或者甚至有一个?我找不到任何例子!
或者做一些像调用IndexAction,如果没有指定只是没有完成,但每个"短网址"必须在单独的路由逻辑中指定?
或者我完全误解了HMVC/PAC的概念?
仅供参考:我包含了php标签,因为我在php中使用我的框架,想知道php中的约定.我经常看到其他编程语言的差异.
没有独立于框架的官方约定。
URI 标识资源。某些框架如何将这些 URI 映射到内部应用程序功能取决于该框架。例如,如果您想做 REST,则根本不需要操作,因为操作是由使用的 HTTP 动词隐含的,例如
DELETE http://example.com/resourceName/1234
Run Code Online (Sandbox Code Playgroud)
而“路由”框架中的相同内容可能类似于
POST http://example.com/resourceName/delete (with POST Body 1234)
Run Code Online (Sandbox Code Playgroud)
这两个 URI 以某种方式映射到应用程序中知道如何删除的机制。
| 归档时间: |
|
| 查看次数: |
1326 次 |
| 最近记录: |