PHP为不同目录中的脚本指定固定包含源

时间:2010-06-12 07:34:33

标签: php

我目前正在进行单元测试,并使用文件夹来组织我的测试用例。例如,与管理用户帐户有关的所有案例都在\ tests \ accounts下。随着时间的推移,有更多的测试用例,我开始按类型分隔案例,例如\ tests \ accounts \ create,\ tests \ account \ update等。

然而,一个恼人的问题是我必须指定一组常见包含的路径。我必须使用这样的包含:

include_once ("../../../../autoload.php");
include_once ("../../../../init.php");

tests \ accounts \中的测试用例需要更改include(减少一个目录级别)。反正有没有让他们以某种方式找到我的两个常见包括?我理解我可以在我的PHP配置中设置包含路径,或者使用服务器环境变量,但我想避免使用这样的解决方案,因为它们使应用程序不那么便携,并且与程序员无法控制的另一层相结合(某些web主机)不允许配置PHP的配置设置,例如)

3 个答案:

答案 0 :(得分:4)

您可以尝试在php.ini中使用“include_path”或在php中使用函数set_include_path http://php.net/manual/en/function.set-include-path.php

set_include_path('/home/www/...');

set_include_path('../../../');

另外,你在全局文件中创建一个常量,然后

define('DIR_PATH', '../../');
include_once(DIR_PATH . 'file');

因为“set_include_path”效率不高。

希望我帮助

答案 1 :(得分:2)

为什么不只是定义一个变量

$includePath = "/unittests/include/";

然后

include_once ($includePath."something.php");

答案 2 :(得分:0)

  

因为文件放在   不同的目录级别,   相对路径也会因文件而异   提交

这就是为什么绝对路径总是被认为更好。

include $_SERVER['DOCUMENT_ROOT']."/../config/init.php";

足够大部分时间