老问题:require 和 include

pigwen521 2011-03-03 10:09:36
搜索了一番,发现全都说这二个的区别是:
1,在引用不存在文件的时候require是报错误,脚本停止运行,include只是报警告,程序继续运行。
2,require是非条件引用,include是条件引用,即如果写在if或for里,无论是否会执行require,都会无条件地引用,而include只有运行include才引用文件。

关于第一点,测试是这样的。
但第二点!无论我怎么测试,二者结果完全一样,都感觉是非条件引用,是不是与PHP版本有关,我的是php 5.0.51b。
大家可以去测试测试,如:
if(false){
require 'notexist.php';//不存在的文件
require 'error.php';//有PHP语法错误的文件
require 'fn.php';//fn.php 里有个函数fn()
}
echo fn();
//运行结果是只报fn不存在的错误,不会报notexist.php文件不存在和error.php文件有语法错的错误,说明if里的二个文件根本没有引用。
或者是我理解require的非条件引用有误?那请提供一代能说明非条件引用的代码。

...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazyboy_wu 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 life169 的回复:]

兄弟语法搞错了吧
if(false){
都if(false)了,这里面还能执行吗???
require 'notexist.php';//不存在的文件
require 'error.php';//有PHP语法错误的文件
require 'fn.php';//fn.php 里有个函数fn()
}
[/Quote]

楼主是测试在逻辑不执行的情况下,require是否还执行,将文件包含起来


关于require(_once)和include(_once)的一些认识:

在PHP4和以前的版本是这样的:

require 是 在 php 执行之前进行 载入操作, 所以一旦错误 就编译不通过, 出致命错误;

include 是 在php 执行时进行载入操作, 所以就是出错也是把错误显示一下而已;

但PHP4之后就是现在的样子了,也就是两者在报错级别上不同之外,其他功能完全一致。


life169 2011-03-04
  • 打赏
  • 举报
回复
兄弟语法搞错了吧
if(false){
都if(false)了,这里面还能执行吗???
require 'notexist.php';//不存在的文件
require 'error.php';//有PHP语法错误的文件
require 'fn.php';//fn.php 里有个函数fn()
}
helloyou0 2011-03-04
  • 打赏
  • 举报
回复
正常, 抄来抄去没做测试, 就流传到今天了......

楼主好样的~~~~
ImN1 2011-03-03
  • 打赏
  • 举报
回复
手册这样写:


=========================
Note: 在 PHP 4.0.2 之前适用以下规则:require() 总是会尝试读取目标文件,即使它所在的行根本就不会执行。条件语句不会影响 require()。
=========================

你是php5喔……
pigwen521 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hellsb 的回复:]

我想问下,包含文件你确定执行了?

if(false) = if(fasle = true)?

你认为if会向下执行,另外你把正确的FN文件删除,包含一个正常文件看可以包含吗?
[/Quote]能想到的情况都测试了。。require 和 include完全一样,除了报错上。
pigwen521 2011-03-03
  • 打赏
  • 举报
回复
看了官方说明,想结贴了!搜索出来的结果,要不是用的4.0的版本,要不就是没做测试忽悠人的!
You can insert the content of one PHP file into another PHP file before the server executes it, with the include() or require() function.

The two functions are identical in every way, except how they handle errors:

include() generates a warning, but the script will continue execution
require() generates a fatal error, and the script will stop

It is recommended to use the require() function instead of include(), because scripts should not continue after an error.
hellsb 2011-03-03
  • 打赏
  • 举报
回复
我想问下,包含文件你确定执行了?

if(false) = if(fasle = true)?

你认为if会向下执行,另外你把正确的FN文件删除,包含一个正常文件看可以包含吗?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧