我目前正在进行单元测试,并使用文件夹来组织我的测试用例。例如,与管理用户帐户有关的所有案例都在\ tests \ accounts下。随着时间的推移,有更多的测试用例,我开始按类型分隔案例,例如\ tests \ accounts \ create,\ tests \ account \ update等。
然而,一个恼人的问题是我必须指定一组常见包含的路径。我必须使用这样的包含:
include_once ("../../../../autoload.php");
include_once ("../../../../init.php");
tests \ accounts \中的测试用例需要更改include(减少一个目录级别)。反正有没有让他们以某种方式找到我的两个常见包括?我理解我可以在我的PHP配置中设置包含路径,或者使用服务器环境变量,但我想避免使用这样的解决方案,因为它们使应用程序不那么便携,并且与程序员无法控制的另一层相结合(某些web主机)不允许配置PHP的配置设置,例如)
答案 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";
足够大部分时间