1

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

不使用变量:

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';

为了记忆的目的,我越能避免变量,但我不知道这是否是提高性能的好习惯。

4

3 回答 3

7

为了记忆,我越能避免变量

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

性能有区别吗

担心“性能”也是如此。这两种方法之间的时间差异非常小,以至于毫无意义,而且肯定难以察觉,尤其是当每个脚本只执行一次时。此外,与访问磁盘以加载 PHP 并解析它所需的时间相比,这两种创建字符串的方式之间的时间差异是微不足道的。

更好地关注DRY 原则不要重复自己。DRY 可帮助您预防此类问题:

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

“我的数据库功能都不起作用!怎么了?”

于 2013-08-11T15:16:06.060 回答
4

为了记忆的目的,我越能避免变量,但我不知道这是否是提高性能的好习惯。

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

追求可读性可维护性

此外,一个变量增加了一层间接性,即$path如果你想改变你的路径,你可以简单地修改。修改$_SERVER['DOCUMENT_ROOT']不是一个好主意。

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

define('CLASS_DIR', 'your value');
于 2013-08-11T15:15:58.747 回答
0

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

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

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

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

spl_autoload_register('my_autoloader');
于 2013-08-11T15:39:15.173 回答