MVC - 子文件夹控制器

3

我想要创建自己简单的PHP MVC框架,以提高我的PHP技能。

我有一个关于管理员部分的问题,你如何创建它?

在Kohana中,控制器可以在子文件夹中:

例如:/controller/admin/admin.php

还有其他方式吗?只要代码可以共享到父级helpers/libs或父级models中就可以了。


你的问题非常宽泛。有千千万万种其他方法,从你的问题中也不清楚实际的标准是什么。 - hakre
你的问题非常宽泛?那是你的看法。 - I'll-Be-Back
请分享一下您的观点,您的问题有什么特别之处? - hakre
3个回答

2
你需要注意的第一件事是Kohana是一个HMVC框架。与其他框架相比,它有一些不同之处。在这种情况下,“admin”不仅仅是一个模块,而是一个命名空间(尽管kohana仍然使用类似PEAR的“命名空间”)用于控制器和其他类。
这种方式另外还可以将应用程序的其他部分分离出来。比如说你有很多处理标签和标签云的代码。然后你可以为此创建另一个命名空间/模块。并将它们用作子控制器。这是HMVC的一个好处。
将管理部分与普通应用程序分开的另一种方式是将它们视为独立的应用程序,但是您需要另一个位置来共享组件(最可能是来自模型层)。然后您的服务器上会有一个以上的/appliation/文件夹。
或者您可以两种方式结合使用。

1

我假设你想创建另一个MVC框架的原因是为了提高你的PHP技能,而不是试图创建一个每天在公司使用的框架。我知道你没有要求这样的建议,但是有很多优秀的MVC框架(你可能已经知道很多)。我认为这是学习设计模式和增强你的PHP(或任何其他语言)技能的好方法。

至于你的问题,我看到最常见的方法是使用不同的目录,比如你提到的“admin”子目录,然后强制控制器名称添加后缀或前缀,例如“UsersAdminController.php”,在结尾添加“AdminController”。

使用子目录的一个好处是它强制实现更好的关注点分离,并减少在同一目录中拥有许多相似类的可能性,这可能会在某些时候引起混淆。


1
实际上,大多数 PHP 框架都是垃圾。 全局状态无处不在,代码碎片化,固执地使用 ORM,身份验证/授权系统缺陷严重,忽略 SOLID 原则...你可以说制作框架就像是重新发明轮子,但 PHP 社区仍在努力让那个轮子变得更加完美。 - tereško
@tereško 我同意这个说法。PHP没有Ruby拥有的东西。我们没有一个成熟的标准框架。 - Daniel
@Daniel,如果你所说的“成熟框架”是指那个被创建者描述为“用于原型设计而不应用于生产代码”的框架,实际上导致了ActiveRecord的滞后和其他当前Web框架中MVC的误实现...那么你就是一无所知。 - tereško
“成熟框架”一词是指标准及其实现非常可靠的框架。许多 PHP 框架都十分糟糕,只不过是一堆臃肿混乱的代码。框架不一定非得是 MVC 或 ActiveRecord 的实现,虽然最近的 MVC 框架中有很多 ActiveRecord 的实现。但是,对于 MVC 的误用还有待商榷。 - Daniel

1

我认为创建自己的框架是一个很好的想法,即使只是为了更好地理解 Web 应用程序的结构。

我正在做这件事,我认为你的方法非常取决于你想走多远。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接