MVC -一个公共功能的地方



我刚刚开始研究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组件,它就是视图的一部分。

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

  1. 你可以use path/to/notifications.php,然后$notifications = new Notifications();,其中notifications.php是一个类,方便你引用的消息。
  2. 你可以在你的视图(甚至是一个基本视图!)上设置extends Notifications,这样你实例化的任何视图都可以立即访问你的通知类。
  3. 您可以(尽管可能不应该)require_once( 'path/to/notifications.php' );,然后其中的类或函数将可用。同样,你可能不应该这样做

底线是:

    将旧的过程代码放在一个组织良好的类中。如果代码是这样做的,它可能会被命名为Notifications。重要的是要组织得好,命名得好,不要把太多的代码强行塞进一个东西里。在你的代码中使用这个类。你可以显式地使用它的命名空间和new它的一个实例,或者你可以扩展它,把它作为你视图的父类。

最新更新