gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:47 26 4
gpt4 key购买 nike

在 MVC 中它像 http://www.yourdomain.com/sampleController/sampleAction/ 如果你只调用 /sampleController/ 那么 /sampleController/indexAction/ 如果你只是调用/然后 /indexController/indexAction/ 触发。

当然也有异常(exception),但这或多或少是惯例。

Zend 有一些 smilir。他们称之为模块。

它们基本上只是每个包含一个 MVC 逻辑的文件夹。所以你可以调用/Module1/Controller/Action/。如果你只是调用 /Module1/ 然后 /Module1/indexController/indexAction/ 触发。如果您有一个大项目,这很方便,因为您可以构建更多的结构,但如果您只有一个小项目,这会很烦人。

所以我非常喜欢HMVC/PAC的idea,想在我的框架中采用它。

我是否理解正确,它与 Zend 基本相同,但具有无限的嵌套模块?

例如我有 /sub-project/sub-sub-project/controller/action/

如果我调用/A/B/C/D/,约定是什么。

它是否表示模块 A/B 中 Controller C 中的 Action D?还是模块 A/B/C 中 Controller D 中的 IndexAction?

举个例子:

Content
ToplistController
AdministrateAction
IndexAction
ContentController
ToplistAction
Users
Chat
RoomController
IndexAction

我现在调用 URL /content/toplist/

对于 URL /users/chat/room/?room=1 这个例子很明显,因为只有一种可能性。但这是正确的吗?是否有约定在正确的 Controller 中唯一地处理正确的操作?

我的第一个想法是“尽可能少地猜测”。

所以我首先检查 url 是否直接匹配到一个 Action 。

如果有一个 Controller /模块调用相同的索引操作,如果存在“更高级别”的匹配项,它就不会触发。

如果不是这种情况,我会查看 url 是否直接匹配 Controller 并附加 IndexAction。

如果不是这种情况,我会寻找一个模块并猜测 IndexController 和 IndexAction,如果不是这种情况,我会寻找一个名为 index 的模块。

但我想避免这种 if/else 内容和文件系统访问。所以我想知道大会是怎样的。或者甚至有一个?我找不到任何示例!

或者在没有指定的情况下调用 IndexAction 之类的事情只是没有完成,但每个“短 url”都必须在单独的路由逻辑中指定?

还是我完全误解了 HMVC/PAC 的概念?

仅供引用:我包含了 php 标记,因为我正在用 php 构建我的框架并且想了解 php 中的约定。我经常看到其他编程语言的差异。

最佳答案

一个简单的(我相信已被广泛接受的)惯例是尾部斜杠的存在/不存在,其中 A/B/C/D/表示 Controller D 中的 IndexAction,而 A/B/C/D 表示 Action D在 Controller C 中。

关于php - MVC/HMVC/PAC 模式中 URL 结构的约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com