MVC - 共同功能的地方?

时间:2015-10-26 15:33:27

标签: php model-view-controller

我刚刚开始研究MVC而且我很新。我想将程序代码移植到它,但我正在努力(请没有人建议使用框架)。

我能理解它是如何运作的,但理解与做不同。在我的程序代码中,我有几个函数,如message()。例如,如果用户没有查看当前页面的权限,则会调用它们。

我的问题是将其添加到MVC中。到目前为止我已经添加了Twig,并且我已经设法在索引页面上呈现了一些Twig,但是之前使用诸如message之类的函数就像这样简单:

message('Message Text');

将其添加到控制器目录将允许将其作为网页进行访问,这是我不想要的。通过该模型,我不知道如何在不首先要求文件的情况下执行此操作。我可以使用一个函数,但我不想要全局变量,这也是我改变的部分原因。

如何正确放置常用功能?

修改

我正在使用的是此版本的修改版本:http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

1 个答案:

答案 0 :(得分:1)

我倾向于认为传统的MVC是这样的:

控制器是我实现产品的业务逻辑 模型是表示数据的代码 视图代表了我的产品。

在这种范例下,what represents my product是最终用户所看到的。 因此,如果它是一个UX组件,它就是视图的一部分。

通过这种方式,很容易弄清楚如何使用它:

  1. 您可以use path/to/notifications.php然后$notifications = new Notifications();,其中notifications.php是一个便于您参考的消息的类。
  2. 您可以extends Notifications查看您的视图(甚至是基本视图!),以便您实例化的任何视图都可以立即访问您的通知类。
  3. 你可以(虽然可能不应该)require_once( 'path/to/notifications.php' );,然后其中的类或功能可用。再一次,你可能不应该这样做
  4. 底线是:

    • 将旧的程序代码放在组织良好的课程中。如果这就是代码的作用,它可能会被命名为Notifications。重要的是组织好,名字好,不要试图将太多的代码强加于一件事。
    • 在代码中使用该类。您可以明确地使用它的命名空间和new它的实例,或者您可以扩展它以将其作为视图的父类。