我正在从底层构建一个PHP CMS。我的系统中有一个超级核心文件,我现在已经自动导入、所有、构成系统核心的其他包和类。在典型的页面上,只使用了其中的几个类和方法。
考虑到在服务器上加载require_once()以包含所有这些文件,以及用户必须等待页面加载的时间,我想知道我应该选择哪一条路径:
请有人告诉我,这两种方案中哪一种是最好的,并简要概述其利弊?
谢谢你抽出时间!
发布于 2011-06-15 14:34:07
今年早些时候,我在开发PHP框架时遇到了这个问题。
我考虑了利弊,下面是我的评价:
选项1-前端控制器模式脚本包括所有其他脚本
优势
缺点
我们有两个类Rectangle和Shape。Rectangle是一个子类,即Shape的扩展。但是,核心脚本按字母顺序包括类。因此,当包含Rectangle时,就找不到Shape,并且会抛出一个错误。
Rectangle类:
class Rectangle extends Shape{
}Shape类:
class Shape{
}选项2-加载主包,然后根据需要加载其他包
优势
缺点
编程代码是为人类编写的。因此,为了使事情更符合逻辑并分解问题,我选择了选项2作为框架。
发布于 2011-06-15 14:28:02
你问的是哪一个是最好的负载策略。这通常是与自动装载机相关的讨论。
与任何策略一样,有利有弊。包括所有的文件可以帮你省去忘记一个文件的麻烦。另一方面,一个自动加载程序也不会忘记一个文件。
但是,您不能总是使用一种或其他策略,但是如果您实现多个策略,您可以根据需要进行选择。例如,如果您开发CMS,事情可能会经常发生变化。但是,如果CMS安装在服务器上,则该版本不会经常更改。
因此,在生产中,将所有核心库合并到一个文件中并在启动时要求它们的策略可能是一个好处,这取决于服务器的负载大小。
为了简单地构建自己的系统,我可以提出一个自动加载器。如果您逐个文件地排列类文件,它们将在您使用类的那一刻自动加载。
当您在开发中完成某一步时,您实际上知道什么是核心文件。然后,您可以在默认情况下加载这些,这样自动加载器就不会再为它们触发了。
发布于 2011-06-15 14:27:00
不要装载你不打算使用的东西。实现一个自动装填机或深化您的需求一次。
即使性能是可忽略的,包含更少的文件也会增加您快速查找bug和确定应用程序流程的能力。
https://stackoverflow.com/questions/6359207
复制相似问题