set_include_path()做什么?

时间:2015-05-08 16:59:25

标签: php

根据php手册:

  

指定require,include,fopen(),file(),readfile()和file_get_contents()函数查找文件的目录列表。格式类似于系统的PATH环境变量:用Unix中的冒号或Windows中用分号分隔的目录列表。

我不明白你为什么要指定目录?

例如我看到了这段代码

<?php
    defined("DS") || define("DS", DIRECTORY_SEPERATOR);

    defined("ROOT_DIR") || define("ROOT_DIR", realpath(dirname(__FILE__).DS."..".DS));

    defined("CLASSES_DIR") || define("CLASSES_DIR", "classes");

    set_include_path(implode(PATH_SEPERATOR, array(
         realpath(ROOT_DIR.DS.CLASSES_DIR.DS),
         get_real_path()
    )));

?>

为什么要将CLASSES_DIR添加到包含路径?你不能做像需要的东西(“classes / example.php”)吗?

1 个答案:

答案 0 :(得分:2)

通过设置包含路径,您不再需要明确指定文件的完整路径,因为php有一些选项可供选择,即您的示例.php&#39;。假设你有一个名为&#39; exampleClass.php&#39;的php文件。在你的&#39; DOCUMENT_ROOT / classes&#39;目录和index.php直接位于您的DOCUMENT_ROOT:

<?php
     set_include_path(DOCUMENT_ROOT . DIRECTORY_SEPARATOR . 'classes');
     // Note that exampleClass.php is not located in the same directory as this index.php
     require('exampleClass.php');
?>

但是我想补充一点,在描述的例子中,可能有更好的组织和构建项目的替代方案,以避免(#hope/this/path/is/the/right/one.php) &#39;声明。例如。将namespacesautoloading

结合使用