我刚刚开始研究MVC,我是很新的。我想将过程代码移植到它,但我正在挣扎(请没有人建议使用框架)。
我能理解它是如何工作的,但是理解和做是不同的。在我的过程代码中,我有几个函数,比如message()。例如,如果用户没有查看当前页面的权限,则调用这些方法。
我的问题是将此添加到MVC。到目前为止,我已经添加了Twig,并且我已经设法在索引页上渲染了一些Twig,但是以前使用message等函数就像这样简单:
message('Message Text');
将其添加到控制器目录将允许它作为网页访问,这是我不想要的。通过模型,我不确定如何在不首先需要文件的情况下做到这一点。我可以使用一个函数,但我不想要全局变量,这是我改变的部分原因。
如何正确放置常用函数?
编辑
我使用的是这个的修改版本:http://www.phpro.org/tutorials/Model-View-Controller-MVC.html
我倾向于这样看待传统的MVC
:
控制器是实现产品的业务逻辑。
模型是表示数据的代码。
视图代表了我的产品。
在此范例下,what represents my product
是最终用户看到的。如果它是UX组件,它就是视图的一部分。
通过这种方式,很容易弄清楚如何使用它:
- 你可以
use path/to/notifications.php
,然后$notifications = new Notifications();
,其中notifications.php
是一个类,方便你引用的消息。 - 你可以在你的视图(甚至是一个基本视图!)上设置
extends Notifications
,这样你实例化的任何视图都可以立即访问你的通知类。 - 您可以(尽管可能不应该)
require_once( 'path/to/notifications.php' );
,然后其中的类或函数将可用。同样,你可能不应该这样做
底线是:
- 将旧的过程代码放在一个组织良好的类中。如果代码是这样做的,它可能会被命名为
Notifications
。重要的是要组织得好,命名得好,不要把太多的代码强行塞进一个东西里。在你的代码中使用这个类。你可以显式地使用它的命名空间和new
它的一个实例,或者你可以扩展它,把它作为你视图的父类。