古语题了,不得不再问一下include和require
程序员文章站
2023-12-27 11:10:21
...
老话题了,不得不再问一下include和require
手册上,include和require的区别只有一点,就是出错时产生的不同级别的错误。
但是,网上关于两者的区别远不止这一点,搞得我非常混乱
下面这些是我从网上摘抄的一些观点和疑问
--------------------------------------------------------------------------------------------------------
什么是“只要程序一执行就调用”?
我暂时这么想,因为也不懂什么编译之类的。请指点
require情况:执行aa.php时,把aa.php和bb.php一起编译,然后执行;
include情况:先把aa.php编译->执行,发现有include,然后把bb.php编译->执行bb.php,完成后返回继续执行aa.php下面的代码。
--------------------------------------------------------------------------------------------------------
这一点就非常搞不明白了。aa.php还是上面的那个代码,下面是bb.php,执行得好好的
--------------------------------------------------------------------------------------------------------
文章中举了个例子并得出结论:
但是,我测试却能将test1.php和test2.php都引入进来
输出:aatest1test2
--------------------------------------------------------------------------------------------------------------------------
是否是这样?如何能证明已经引入了bb.php?
------------------------------------------------------------------------------------------------------------------------
另外,还有一个关于报错的问题,手册上这么讲
报错如下:
第一个warning是报什么样的错误?两个都是warning
第二个看像是在include_path里找不到而报的错?
------解决思路----------------------
所有的说明一最新的手册为准
网上关于include和require的描述,大多是基于php4的
到了php5时代,就只剩下 出错时产生的不同级别的错误 的区别了
------解决思路----------------------
IT知识的更新换代太快了,一切以官方手册为准,也可以研读一下PHP源码,看看是怎么处理的,那是最正确的。
手册上,include和require的区别只有一点,就是出错时产生的不同级别的错误。
但是,网上关于两者的区别远不止这一点,搞得我非常混乱
下面这些是我从网上摘抄的一些观点和疑问
--------------------------------------------------------------------------------------------------------
什么是“只要程序一执行就调用”?
//aa.php
echo 'aa';
require './bb.php';
我暂时这么想,因为也不懂什么编译之类的。请指点
require情况:执行aa.php时,把aa.php和bb.php一起编译,然后执行;
include情况:先把aa.php编译->执行,发现有include,然后把bb.php编译->执行bb.php,完成后返回继续执行aa.php下面的代码。
--------------------------------------------------------------------------------------------------------
这一点就非常搞不明白了。aa.php还是上面的那个代码,下面是bb.php,执行得好好的
//bb.php
if(true){
echo 'bb';
}
return 'abc';
--------------------------------------------------------------------------------------------------------
文章中举了个例子并得出结论:
//aa.php
echo 'aa';
$i=1;
while($i require './test' . $i . '.php';
$i++;
}
但是,我测试却能将test1.php和test2.php都引入进来
echo 'test1';
echo 'test2';
输出:aatest1test2
--------------------------------------------------------------------------------------------------------------------------
//aa.php
if(false){
require './bb.php';
}
是否是这样?如何能证明已经引入了bb.php?
------------------------------------------------------------------------------------------------------------------------
另外,还有一个关于报错的问题,手册上这么讲
//aa.php
include 'nofile.php';
//require 'nofile.php';
报错如下:
第一个warning是报什么样的错误?两个都是warning
第二个看像是在include_path里找不到而报的错?
------解决思路----------------------
所有的说明一最新的手册为准
网上关于include和require的描述,大多是基于php4的
到了php5时代,就只剩下 出错时产生的不同级别的错误 的区别了
------解决思路----------------------
IT知识的更新换代太快了,一切以官方手册为准,也可以研读一下PHP源码,看看是怎么处理的,那是最正确的。
相关文章
相关视频