MVC-PHP中的全局文件


Global files within MVC-PHP

只是第一次在PHP中修改MVC。我正在遵循一个简单的教程,在那里我偶然发现了一个当前教程中没有提到的问题:如果我想为每个页面(页眉和/或页脚内)包含一些特殊的函数,那么在MVC原则中包含全局文件(如页眉和页脚)的正确方法是什么?

假设我有一个"日志页"和一个"主页",其中都包括footer.php。但是,在"日志页面"上,我希望在页脚中添加一些额外的文本(保持简单)。制作单独的文件是一种解决方案,但这感觉很尴尬,也打破了我心目中的MVC原则。

另一个解决方案可能是从控制器传递$_REQUEST,该控制器决定应该将哪个视图加载到页脚中,但这似乎再次打破了MVC,因为在我看来,这是应用程序逻辑吗?

我开始相信的第三种解决方案是最好的(请记住,我正在学习!)是通过控制器将数据从模型传递到页脚和页眉,就像我对页面视图所做的那样,从而使页眉和页脚视图成为自己的视图。

您需要的是MVC中的Layout,是的,它是一个视图。这里有一个相关的问题和答案:在MVC中查看,什么是布局以及如何创建一个

由于这些都是全局文件,所以包含机制与MVC模式无关。尽管这些页眉/页脚中的函数应该遵循MVC模式来执行。

我能想到的一个解决方案是添加以下内容:

php_admin_value auto_prepend_file "/Path/to/header.php"
php_admin_value auto_append_file "/Path/to/footer.php"

到您的VirtualHost定义。

并添加一种机制,以包含要包含在这些文件中的视图。