我的问题是我所做的是否正确,或者是否会导致安全/性能问题。
我使用$GLOBALS数组,并填充了很多值从数据库,如(页面标题,用户信息,模板信息…等等),这样我所有的PHP文件都可以访问这个信息。我遵循MVC设计模式,所以这就是我的视图文件如何访问模型文件中生成的信息。
如果这不是正确的做事方式,请告诉我为什么,什么是正确的方法。
谢谢
你没有遵循MVC模式,你只是使用全局变量来显示一些东西在一个"共享所有"-脚本在一个"无共享"-架构。
做输出可以意味着您将获得某个的视图,但通常这不会与MVC(模型-视图-控制器)模式的术语视图混合在一起。你所做的,模板或输出可能是一个更好的措辞。
如果这不是正确的做事方式,请告诉我为什么,什么是正确的方法。
如果你想实现MVC模式,那么这可能是你所指的MVC:
- 模型:你的文件系统和数据库
- 视图:你的HTML输出+ CSS + JS
- 控制器:你的PHP脚本
MVC只是一个模式。你可以随心所欲地执行它。你可以在很多没有实现的东西中找到它。这只是一个模式。
但更准确地说,MVC模式更常用于面向对象的实现。你的实现与面向对象的完全不同,你使用全局状态而不是对象实例。
但是你没有在你的问题中写你想实现一个面向对象的MVC模式,你使用的模板脚本是它的一部分。
你这样做是完全合适的,这取决于你要满足的需求。
MVC只是一个模式。它有利有弊。它有好处也有后果。这只是一个模式。
特别是当你关心性能的时候,不要把事情弄得更复杂,比如加载一个完整的对象树,只在HTML模板中显示一些变量
不,这是一个非常混乱的做法。
不,它和MVC没有任何关系。
模块化编程的一个基本概念(它是面向对象编程的基础,与函数式编程有很大的重叠)是全局变量是不好的——很多构成好的编程(和好的编程语言)的东西都是关于将系统的各个部分与其他部分隔离开来的。
将数据存储在全局变量中无助于实现使所有php文件都可以使用这些信息的目标。
无论如何,将它们分组在一个全局数组下,这样你就不必在函数/方法调用中不断传递它。
填充维护公共数据的一种方法是使用自定义会话处理程序添加对它的实现处理。