【问题标题】:MVC - sub-folders controllersMVC - 子文件夹控制器
【发布时间】:2011-11-27 11:43:01
【问题描述】:

我正在考虑用 PHP 创建自己的简单 MVC 框架。我认为提高我的 PHP 技能是个好主意。

我对管理部分有疑问,如何创建它?

在 kohana 中,控制器可以位于子文件夹中:

例如:/controller/admin/admin.php

还有什么办法?只要代码可以共享给父助手/库或父模型。

【问题讨论】:

  • 您的问题非常广泛。还有一千零一种其他方法,从您的问题中不清楚实际标准是什么。
  • 您的问题范围很广?这是你的意见。
  • 好吧,就你的意见分享一下你的问题的具体内容是什么?

标签: php model-view-controller design-patterns


【解决方案1】:

首先要注意的是,Kohana 是一个 HMVC 框架。与其他人相比,它有点不同。在这种情况下,admin 与其说是一个模块,不如说它是一个用于控制器和其他类的命名空间(尽管 kohana 仍在使用类似 PEAR 的“命名空间”)。

这种方式还可以分离出应用程序的其他部分.. 假设您有很多代码处理标记和标记云。然后您可以为此创建另一个名称空间/模块。并将它们用作子控制器。这是 HMVC 的一项优势。

将管理部分与一般应用程序分开的另一种方法是将它们视为单独的应用程序,但是您需要另一个位置来存放共享组件(很可能来自 模型层)。然后你的服务器上有多个/appliation/ 文件夹。

或者你可以做两个组合。

【讨论】:

    【解决方案2】:

    我在这里假设您想要创建另一个 MVC 框架的原因确实是为了提高您的 PHP 技能,而不是尝试创建一个框架以便在您的公司日常使用。我知道你没有征求过这样的建议,但是那里有很多很棒的 MVC 框架(你可能已经知道其中的很多)。不过,我认为这是学习设计模式和提高 PHP(或任何其他语言)技能的好方法。

    就您的问题而言,我见过的最常见的方法是使用不同的目录,例如您提到的“admin”子目录,然后为控制器强制使用名称后缀或前缀,例如“UsersAdminController.php”,例如添加最后是“AdminController”。

    使用子目录可能更好的一件事是,它可以更好地分离关注点,并减少您在同一目录中以许多具有相似的类结束的可能性,这可能会在某些时候引起混淆。

    【讨论】:

    • 其实大部分 php 框架都是垃圾。无处不在的全局状态、废弃的代码片段、对 ORM 的痴迷、受阻的身份验证/授权系统、对 SOLID 原则的无知 .. 你可以说制作框架正在重新发明轮子,但 PHP 社区仍在制作轮子的过程中。
    • @tereško 我同意这种说法。 PHP 没有 ruby​​ 所拥有的。我们没有标准成熟的框架。
    • @Daniel ,如果在 ruby​​ 中使用“成熟框架”,您的意思是那个,创建者将其描述为“原型设计框架,不应用于生产代码”,实际上导致了这种延迟- ActiveRecord 的风暴并导致当前 Web 框架中其他 MVC 的错误实现.. 那你就一无所知了。
    • @tereško “成熟的框架”意味着在标准和实现方面坚如磐石的东西。 php 中的许多框架都非常糟糕。只是一堆臃肿的纠结代码。框架不一定是 mvc 或 ActiveRecord 的实现。尽管在最近的 mvc 框架中有许多 ActiveRecord 实现。尽管 mvc 的错误实现是值得商榷的。
    【解决方案3】:

    我认为创建自己的框架是一个好主意,如果只是作为一个练习来更好地理解网络应用程序背后的结构。

    我自己就是这样做的,我认为你的方法很大程度上取决于你想走多远。

    我从多语言支持子系统和用户数据库管理类开始,现在我转向内容管理和数据库查询清理。

    我将我的类分开存放在文件中,并按文件夹中的子系统分组,例如 multilang 或 admin,我认为这是最好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多