0

可能的重复:
PHP 中“包含”的成本?

这个问题专门针对PHP,但我很确定他的回答本质上与大多数支持类(至少是解释类)的现代编程语言相似。

当您包含或使用一个类时(使用PHP >= 5.3.0 的命名空间),会花费多少处理资源?

例如,假设有一个Database.php包含数千行代码的大型 PHP 脚本文件,然后将其导入另一个脚本:

# PHP >= 5.3.0
use Service\Database;

或者

# in previous versions
include Service/Database.php;

我不确定在这种情况下幕后会发生什么。它是将所有类加载到工作内存中还是仅将您实际使用的功能加载到工作内存中?如果你导入它但不使用它,它是否仍然浪费资源?

4

1 回答 1

1

这个问题是特定于 PHP 的,因为其他语言在解析器中的工作方式完全不同。

第二条评论:use不包含任何内容,因此不能替代include/require.

第三条评论:因为将 PHP 源代码包含到脚本中需要将代码解析为操作码,然后再进行解释,所以有操作码缓存可以在第一次之后消除这一步。这些大大提高了性能。

怎么了?包含一个文件会执行该文件。这意味着源被解析或从缓存中获取,然后执行。定义某些东西的每一行代码,比如classor function,都会为后面的代码行定义它的部分。执行某些操作的每一行,例如定义变量或echo,也会执行并按预期执行。

Include不是然后被解析的源代码包含。因为代码是执行的,而不是作为源代码粘贴的,所以你不能include到处使用。事实上,include如果包含的代码返回一个值,它本身就可以充当一个函数。这通常用于包含配置值,以从操作码缓存中受益,而不是一直解析 INI 文件:

config.php
return array('db' => 'example.com', 'user' => 'foo',);

other file:
$config = include('config.php);
于 2012-12-10T08:47:22.590 回答