Press "Enter" to skip to content

PHP外部文件的导入——代码包含控制结构

【方法】

可以使用include/require语句包含并运行指定文件

【工作原理】

(励步英语面试第一题,原理没答出来)

如果给出路径名按照路径来找,否则从include_path环境变量中查找,如果include_path中也没有,则从调动脚本文件所在的目录和当前工作目录下寻找。

当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。也就是相当于复制粘贴进来的。变量的作用域是继承include的。

【报错异同】

加载过程中未找到文件则include结构会发出一条警告,这一点和require不同,require会发出一个致命错误。

require在出错时产生E_COMPILE_ERROR级别的错误。换句话说将导致脚本终止,而include值产生警告(E_WARNING),脚本会继续执行。

【require(include)/require_once(include_once)区别】

唯一的区别就是PHP会检查文件是否已经被包含过,如果是则不会再次包含。

incule_once和require_once会“记住”被包含过的文件,如果你尝试并使用include_once和require_once再次包含相同的文件,这个操作只会被忽略掉。——《PHP5权威编程》

【eval()】

eval()与include是类似的,但是与编译并执行包含进来的代码不同的是,它把代码当成字符串包含进来再执行。这个功能对于运行动态生成的代码或者从外部数据源(例如,数据库)手动获取代码然后执行是非常有用的。不过由于使用eval()相对你把代码写入你的程序中效率上会低很多,一次我们建议你不要去使用它,除非你不得不这么操作:

$str = '$val = 5';
eval($str);
echo $val;
// 将打印出 5

提示:由用户输入赋值的变量永远不要直接传递给eval(),因为这样会让用户去执行任意的代码。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注