Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为不同目录中的脚本指定固定包含源的PHP_Php - Fatal编程技术网

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

为不同目录中的脚本指定固定包含源的PHP,php,Php,我目前正在进行单元测试,并使用文件夹来组织我的测试用例。所有与管理用户帐户有关的案例,例如,都在\tests\accounts下。随着时间的推移,出现了更多的测试用例,我开始按类型来划分这些用例,例如\tests\accounts\create\tests\account\update等等 然而,一个恼人的问题是我必须指定一组公共包含的路径。我必须使用如下内容: include_once ("../../../../autoload.php"); include_once ("../../../

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

然而,一个恼人的问题是我必须指定一组公共包含的路径。我必须使用如下内容:

include_once ("../../../../autoload.php");
include_once ("../../../../init.php");
tests\accounts\中的测试用例需要更改include(少一个目录级别)。有没有办法让他们找到我的两个共同的包括?我知道我可以在我的PHP配置中设置包含路径,或者使用服务器环境变量,但我希望避免使用此类解决方案,因为它们会降低应用程序的可移植性,并与程序员无法控制的另一层相结合(例如,某些web主机不允许配置PHP的配置设置)

您可以尝试在php.ini中使用“include\u path”,或者在php中使用函数集“include\u path”

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

define('DIR_PATH', '../../');
include_once(DIR_PATH . 'file');
因为“set\u include\u path”的效率不高


希望我能帮忙

为什么不定义一个变量呢

$includePath = "/unittests/include/";
然后

include_once ($includePath."something.php");
因为文件放在 不同的目录级别 相对路径也会因文件而异 归档

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

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

在大多数情况下已经足够了

对于我的每个单元测试用例文件,我都必须这样做,因为这些文件位于不同的目录级别,相对路径也会因文件而异file@Extrakun:嗯,写所有的
。/../../../../
。。。如果您不想更改PHP配置中的include路径,我看不到任何其他选项。但是,您可以让所有单元测试从同一页生成,因此变量只需定义一次。此外,如果使用绝对路径,则它将始终相同,因此您不必每次都更改它。除了定义变量,您还必须以某种方式包含一个文件,其中包含以下变量定义:)@Col.shrapanel:是的,要么就是在每个文件中定义变量。在这两种情况下,如果更改路径,则必须在每个文件中更改它(我的意思是,如果更改包含文件的路径)。。。另一个解决方案是使用一个test.php文件,通过包含不同的php文件来处理所有单元测试,从而使变量只定义一次。
include_once ($includePath."something.php");
include $_SERVER['DOCUMENT_ROOT']."/../config/init.php";