0

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

这里:include ('foo.php');

或在这里:$foo = new foo();

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

4

1 回答 1

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

于 2012-09-05T18:16:56.330 回答