在我的项目结构中,我有每个文件分离的常用类,并且自动加载很容易,但现在我想将一些小类分组到一个文件中,可能是一个文件,其名称为当前文件夹。
现在:
|/module
|-Smallclass1.php
|-Smallclass2.php
|-Smallclass3.php
|-Normalclass.php
后:
|/module
|-module.php <-- smallclasses go here
|-Normalclass.php
辩论现在来了。 要自动加载一个'SmallclassX',我想检查 SmallclassX.php 文件是否存在,如果不检查 module.php 是否存在,如果存在,检查该类是否存在于文件并包含它。当我需要单个类时,包括整个 module.php 文件似乎是一个特别的开销,如果该文件包含许多类。 Here他们建议使用标记检查类是否存在,但我不确定它的效率,之后我需要一种方法只包括我需要的类。
你认为如果我只加载我需要的类,就像我提到的那样,它是否也是一个开销因为一次读取文件并查看内部以包含我想要的代码片段?
答案 0 :(得分:1)
您可以使用spl_autoload_register堆叠自动加载器,允许您首先尝试从专用文件加载类,然后再回到包含模块文件(如果没有自动加载器可以解决依赖关系,则通常会出错)。这将允许您通过解析令牌和其他项目来避免所有黑客攻击,这将需要的不仅仅是需要文件并查看之后的结果。
但我会建议您对此解决方案进行基准测试。它是否更有效将取决于访问文件的延迟(APC)以及解析和单独包括每个类的成本。
我也同意其他评论,你可能会有两个单独的方案来包含类,这可能会令人困惑,而APC无论如何都会消除大部分单独文件的成本。