我正在从头开始构建PHP CMS。我的系统中有一个超级核心文件,我目前已自动导入构成系统核心的所有其他包和类。在典型的页面上,只使用了其中的一些类和方法。
考虑到加载require_once()
加载服务器以包含所有这些文件,以及用户必须等待页面加载的时间,我想知道我应该采取哪条路径:
有人可以让我知道这两个选项中哪一个是最好的,以及它的优缺点的简要概述?
感谢您的时间!!!
答案 0 :(得分:6)
您问的是哪个是最佳负载策略的问题。这通常是discussed related to auto-loaders。
与任何策略一样,有利有弊。包括所有文件可以省去忘记一个的麻烦。另一个自动加载器也不会忘记文件。
但是,您不能总是使用一种或另一种策略,但如果您实施多种策略,则可以根据需要进行选择。例如,如果您开发CMS,事情可能会经常发生变化。但是,如果CMS安装在服务器上,则该版本不会经常更改。
因此,在生产中,将所有核心库合并到一个文件中并在启动时需要它们的策略可能是一个好处,具体取决于服务器的负载量。
为了便于构建自己的系统,我可以提出一个自动加载器。如果按文件排列类文件,它们将在您使用该类时自动加载。
当您在开发中实现某个步骤时,您实际上知道核心文件是什么。然后,您可以默认加载它们,这样就不会再为自动加载器触发它们了。
答案 1 :(得分:2)
不要加载你不会使用的东西。实施autoloader或加深您的require_once。
即使性能可忽略不计,较少的文件包含会增加您快速查找错误并确定应用程序流量的能力。
答案 2 :(得分:2)
今年早些时候,我在用PHP开发框架时遇到了这个问题。
我考虑了利弊,这是我的评价:
我们有两个班级Rectangle
和Shape
。 Rectangle
是一个子类,即Shape
的扩展名。但是,核心脚本按字母顺序包含类。因此,当包含Rectangle
时,找不到Shape
,PHP将引发错误。
Rectangle
上课:
class Rectangle extends Shape{
}
Shape
上课:
class Shape{
}
编程代码适用于人类。因此,为了使事情更具逻辑性并解决问题,我选择了选项2来寻找框架。