代码之家  ›  专栏  ›  技术社区  ›  Extrakun

php为不同目录中的脚本指定固定的include源

php
  •  4
  • Extrakun  · 技术社区  · 14 年前

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

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

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

    tests\accounts\中的测试用例需要更改include(少一个目录级别)。有没有办法让他们找到我的两个共同点?我知道我可以在我的PHP配置中设置包含路径,或者使用服务器环境变量,但是我想避免这样的解决方案,例如,它们使应用程序不易移植,并且与程序员无法控制的另一层耦合(例如,一些Web主机不允许配置PHP的配置设置)。

    3 回复  |  直到 12 年前
        1
  •  4
  •   WEBProject    14 年前

    您可以尝试在php.ini中使用“include_path”,或者在php中使用函数集“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”不是那么有效。

    希望我帮助

        2
  •  2
  •   nico    14 年前

    为什么不定义一个变量呢

    $includePath = "/unittests/include/";
    

    然后

    include_once ($includePath."something.php");
    
        3
  •  0
  •   Your Common Sense    14 年前

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

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

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

    大部分时间都够了