$ _SERVER ['DOCUMENT_ROOT'] vs $ path = $ _SERVER ['DOCUMENT_ROOT']

时间:2013-08-11 15:10:44

标签: php variables

包含外部脚本的这两种不同方式的性能是否存在差异?

不使用变量:

include $_SERVER['DOCUMENT_ROOT'].'/class/conf.php';
include $_SERVER['DOCUMENT_ROOT'].'/class/Db.php';
include $_SERVER['DOCUMENT_ROOT'].'/class/Posts.php';

使用变量:

$path = $_SERVER['DOCUMENT_ROOT'];
include $path.'/class/conf.php';
include $path.'/class/Db.php';
include $path.'/class/Posts.php';

为了记忆目的,我可以避免使用变量,但我不知道这是否是一个良好的性能练习。

3 个答案:

答案 0 :(得分:7)

为了记忆目的,我可以避免变量

这就是所谓的“过早优化”。除非你明确知道你有内存问题,并且你为一个字符串分配可能只有几十个字符就会增加你的内存问题,所以不要试图节省空间。

性能是否存在差异

同样担心“表现”。两种方法之间的时间差异很小,没有意义,而且肯定是不可察觉的,特别是当每个脚本只执行一次时。此外,与创建字符串以加载PHP并解析它所花费的时间相比,创建字符串的两种方式之间的不同时间量是无关紧要的。

最好关注the DRY principle不要重复自己。 DRY可以帮助您防止出现这样的问题:

include $_SERVER['DOCUMENT_ROOT'].'/class/conf.php';
include $_SERVER['DOCUMEMT_ROOT'].'/class/Db.php';
include $_SERVER['DOCUMENT_ROOT'].'/class/Posts.php';

“我的数据库功能都没有用!出了什么问题?”

答案 1 :(得分:4)

  

我为了记忆目的而避免使用变量,但我不知道   如果这是一个很好的练习表现。

这绝对不是好习惯。对于当前的处理器来说,一个变量实际上没什么。

寻求可读性可维护性

此外,变量会添加一个间接层,例如,如果要更改路径,则只需修改$path即可。修改$_SERVER['DOCUMENT_ROOT']并不是一个好主意。

我还建议你创建一个常量而不是变量:

define('CLASS_DIR', 'your value');

答案 2 :(得分:0)

如果您的类文件夹位于声明包含的同一位置。

$path = dirname(__FILE__).'/class/';

然后从该文件夹中自动加载您的课程。

function my_autoloader($class) {
    include $path . $class . '.php';
}

spl_autoload_register('my_autoloader');