Php 是否包含您不需要的类';使用是否对性能有影响?

Php 是否包含您不需要的类';使用是否对性能有影响?,php,class,Php,Class,像 文件是否应该包含在require_的条件检查中一次,而不是所有时间?它应该影响的唯一性能是解析它的时间,但我认为这比隐藏在文件中间的复杂include逻辑更可取。更不用说,如果将require放在if语句中,就好像在if语句中插入了该文件的文本,这是不正确的(并且可能不起作用) 有谁能告诉我你是否可以在函数/if语句中声明一个类吗?PHP必须打开文件并对其进行解析,这样才能产生一些影响。对于一些文件,我不会担心它,但它可以失控,因为你的文件增加。这就是为什么有“自动加载”功能的原因,它允许您


文件是否应该包含在require_的条件检查中一次,而不是所有时间?

它应该影响的唯一性能是解析它的时间,但我认为这比隐藏在文件中间的复杂include逻辑更可取。更不用说,如果将require放在if语句中,就好像在if语句中插入了该文件的文本,这是不正确的(并且可能不起作用)


有谁能告诉我你是否可以在函数/if语句中声明一个类吗?

PHP必须打开文件并对其进行解析,这样才能产生一些影响。对于一些文件,我不会担心它,但它可以失控,因为你的文件增加。这就是为什么有“自动加载”功能的原因,它允许您仅在需要时加载类文件,而无需在文件顶部列出一长串要求:

还可以查看
spl\u autoload\u寄存器


这个问题不清楚。在当前的代码中,我认为所有的文件都将被包括在内,无论您是否使用(这些类的声明变量)它们。如果不想加载不使用的类,可以使用
\uu autoload()
函数


无论何时使用include或require,PHP基本上都是将
required
文件中的代码复制/粘贴到代码中。因此,无论你把它放在哪里,PHP仍然在打开文件,读取它并将其放入其中,它不会受到if块的影响。换句话说,require是在代码实际运行之前解析的,所以是的,即使require被放入if块中并且从未运行,您也会受到(非常小的)性能影响。请记住,这是一个非常小的影响。最后,如果您对此感到担心,我会使用
require\u once
-这可以确保这种解析不会发生两次,例如,如果第二个
required
文件
需要第一个文件,这种冗余不会对性能造成第二次影响。

PHP是否会缓存源文件的预编译版本,还是每次请求都会对文件进行解析和编译?并使用以尽量减少自动加载程序的数量(如果所有LIB都使用PSR-0,则只有一个自动加载程序)@Tomalak,这是操作码缓存的主要用途(请参阅)。如果没有它们,PHP会在每次请求时再次编译相同的文件。@arnaud576875:我认为这是对我的问题的“否”。并使用来最小化自动加载程序的数量(如果所有LIB都使用PSR-0,则只有一个自动加载程序)感谢@arnaud576875的建议:)我认为如果在条件块中使用它,它不会被解析。如果我在文件中添加一些随机字符,那么每次如果requires在顶部,我都会得到解析错误,但是如果我将它们放在If块中,那么只有当条件影响很小时,我才会得到错误?通过访问文件系统(磁盘读取)来弄脏手不是需要更长的时间吗?是的,磁盘读取会增加一点开销,但我的回答假定文件位于本地文件系统(不是通过网络装载的)上,并且位于至少具有1.5gbps SATA驱动器的现代系统上。显然,在使用旧ATA硬盘驱动器的系统上运行此功能会对性能造成重大影响。Morpha-正确,它不会被解析,但仍会被读取并放入。
require "class.a.php";
require "class.b.php";
require "class.c.php";

class main{
 function main(){
   if(condition_is_met(){
      $this->something = new A();
   }else{
      $this->something = new B();
   }
 } 

}