什么更好要求(dirname(__FILE__)。'/'.'myParent.php') 而不是仅仅 require('myParent.php')?
许多著名的PHP脚本(包括WordPress)都使用,而不仅仅是在当前运行的脚本的同一目录中包含文件。dirname(__FILE__).'/myParent.php'
'myParent.php'
它们不是一回事吗?为什么你更喜欢打字?
谢谢。
许多著名的PHP脚本(包括WordPress)都使用,而不仅仅是在当前运行的脚本的同一目录中包含文件。dirname(__FILE__).'/myParent.php'
'myParent.php'
它们不是一回事吗?为什么你更喜欢打字?
谢谢。
PHP 需要知道文件的绝对路径。 已经 是绝对路径,但需要使用include_path中的给定路径进行查找,以获取绝对路径并找到文件。更好的选择是:dirname(__FILE__).'/myParent.php'
'myParent.php'
'./myParent.php'
但是,显式使用比让 PHP 始终检查每个包含的当前目录更有效。
include './file'
除了性能提高(在大多数情况下,这可能是预优化*)之外,它还可以防止环境的 PHP 配置没有当前目录 () 作为包含路径的一部分的(非常奇怪的)情况。.
* 使用需要查找的路径与不需要查找的相对路径的基准。每次测试超过 100000 次迭代include
include_path
结果
include("include.php"): 8.3664200305939s
include("./include.php"): 8.3511519432068s
(8.3664200305939 - 8.3511519432068) / 100000 = 0.000000152680874s
除非您包含数百或数千个文件,否则0.0000001s充其量可以忽略不计。
测试代码
define("MAX", 100000);
ob_start();
$i = MAX;
$_t = microtime(true);
do {
include("include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();
echo "include(\"include.php\"): {$_t}s\n";
ob_start();
$i = MAX;
$_t = microtime(true);
do {
include("./include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();
测试在 2.16GHz Macbook 10.5.8 和 PHP 版本 5.2.9(www.entropy.ch 版本 7)上进行