发现无论是 zend framework 还是 pear ,第一步都是设置php的include_path参数,来增加程序include文件的起始目录,以简化程序中 include/require 的文件路径。
set_include_path() 函数可以在php程序中动态改变php的 include_path 参数,其参数是一个字符串,多个不同的目录可以串联在一起作为一个参数一起提交——不同的目录间使用目录分割符号分开,在类unix的系统中这个分隔符是 “:”,在windows系统中这个分隔符是“;”,所以php提供一个常量 PATH_SEPARATOR 来表示当前系统中的这个分隔符。
include_path 的规则如下:
# 当只指定了一个目录为 include_path ,比如 set_include_path("class")。class 为php包含文件的默认起点,但是当clss目录下找不到所要求包含的文件,而在当前页面目录下正好存在这个名称的文件时,则转为包含当前目录下的该文 件。
# 当指定了多个目录为 include_path ,而所要求包含的文件在这几个目录都有相同名称的文件存在时,php选择使用设定 include_path 时排位居前的目录下的文件。
今天要说的是php的set_include_path函数,单从函数的名子我们就可以猜到,设置应用程序目录,开发项目时合理应用这些函数,不但可以让我们在include时不用一层一层的计算目录,还可以提高我们开发的效率,减少文件包含错误率
废话少说,我们先来看个例子
新建2个php文件,一个目录位置结构如下
/index.php
/include/config.php
index.php Code:
Php代码 <?php set_include_path("include"); include("config.php"); ?>/include/config.php Code:
Php代码 我是 include下的config.php现在我们运行index.php 怎么样,看到结果没,我们include时只用写config.php就可以把/inlcude/config.php 文件包含进来.
设 定多个include目录时用 " ;" 号分开。如: set_include_path("include;include2;include3;lib;c:\php\lib");可以用相对路径也可以用 相对路径.
如果,我们要引用的文件不再 include中时,我们可以在设多个默认路径(当我们要引用的文件,在多个路径中多存在是,我们默认取排在最前的路径)。如下:
define('INCLUDE_PATH','/include/');
define('LIB_PATH','/lib/');
set_include_path(INCLUDE_PATH.PATH_SEPARATOR.LIB_PATH.PATH_SEPARATOR.get_include_path());(PATH_SEPARATOR为路径分隔符)
姐妹函数get_include_path() 可以获取当时的include目录, 实现set_include_path同样功能的还有我们强大又可爱的ini_set() 用法:
Php代码 ini_set('include_path', '目录名');