少用但始终都会碰到 - set_include_path ¶
作者:KK
发表日期:2016.12.26
要点速读 ¶
平时执行set_include_path
时千万不要这样用:set_include_path('/path/to/your-folder')
,看上去这只是将你的一个目录设定为include_path,但这里会覆盖掉以前的include paths
正文 ¶
平时include/require文件的时候,PHP先会在当前目录下找找有没有这个路径,如果没有,然后就会在include paths里面找
所谓的include paths
不是一个目录,而是很多个目录,这些目录可以通过get_include_path();
得到(希望可以回顾一下相关文章)
这里要说的是,平时执行set_include_path
时千万不要这样用:set_include_path('/path/to/your-folder')
,看上去这只是将你的一个目录设定为include_path,但这里会直接覆盖掉以前的所有include paths,并不是追加
为了防止覆盖,应该先把旧的给GET出来:
$oldIncludePaths = get_include_path();
$newIncludePaths = $oldIncludePaths . PATH_SEPARATOR . '/path/to/your-folder';
set_include_path($newIncludePaths);
后话 ¶
这个时代,修改include_path的代码已经是越来越少了,最通常的用途无非就是为了include文件,但在PSR-4加载标准普及的情况世道下已经越来越少
我最近一次使用set_include_path函数是因为改进一个10多年的老系统,它里面满布include('各种config')和require_once('各种class')