什么时候加载类,包含文件或启动类时?

时间:2012-09-05 18:10:00

标签: php class

如果我将文件包含到另一个文件中。即foo.php包含类“foo”,有几种方法。 php在什么时候将类加载到内存中,包含在类或类上 引发。

此处:include ('foo.php');

或此处:$foo = new foo();

例如:如果我要包含50个文件,这些文件都包含唯一的类,但只调用其中的1个类,那么在内存使用方面会发生什么?速度?总体而言 - 请解释该行动的不良之处。

1 个答案:

答案 0 :(得分:2)

当您include一个文件时,PHP所做的就是解析该文件,无论它是否包含类定义,过程行或完全注释掉的代码,它都会includes这些行您拥有的当前文件,然后evaluates。换句话说,如果行是可执行的,则查找语法错误 - 执行它们。如果你有50个类文件,包括",一旦包含过程完成,它就变得类似于你有一个文件,其中定义了所有50个类。实例化单个类或多个类的行为然后变得相同。对于个人评估而言,开销的唯一差别就在于包含这50个文件。

如果您确实有大量具有不同类的文件的用例,并且只需要根据您可能加载的文件包含它们,请查看PHP中的自动加载功能:

<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

$first = new FirstClass();
$second = new SecondClass(); 
?>

http://php.net/manual/en/language.oop5.autoload.php