MVC - 子文件夹控制器

时间:2011-11-27 11:43:01

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

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

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

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

例如:/controller/admin/admin.php

其他方式是什么?可以将长代码共享给父助手/库或父模型。

3 个答案:

答案 0 :(得分:2)

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

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

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

或者你可以将两者结合起来。

答案 1 :(得分:1)

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

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

使用子目录可能更好的一点是它可以更好地分离关注点,并降低在同一目录中以simmilar结束许多类的可能性,这可能会在某些时候引起混淆。

答案 2 :(得分:1)

我认为创建自己的框架是一个好主意,只是为了更好地理解Web应用程序背后的结构。

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

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

我将我的课程分成文件并按文件夹中的子系统分组,例如multilang或admin,我认为这是最好的方法。