您好,匿名用户
随意问技术百科期待您的加入

PHP的include、require的运行机制是什么?

0 投票

在学习Zend的过程中看到这样的代码:

$config = new Zend_Config(require 'config.php');

自己也进行了一些尝试:
var_dump(require 'test.php')
1. 如果没有return语句,输出为:

int(1)

2. 如果return语句,输入为return的数据:

...

请问PHP的require、include的机制是什么?
PS:虽然下载了PHP的源码,但一时找不出头绪。

Update
一个测试 test.php output.php

// output.php
output(require 'test.php');
// or output(include 'test.php');
function output($test) {
    var_dump($test);
}

情形1

// test.php 1
return 123;
// output 1
int(123)

情形2

// test.php 2
echo 123;
// output 2
123int(1)

情形3

// test.php 3
echo 123;
die;
// output 3
123
用户头像 提问 2012年 12月1日 @ Hepheastus 上等兵 (182 威望)
分享到:

1个回答

0 投票

php官方给出的解释,require和include的区别在于,require遇到错误会抛出致命错误,而include只会抛warning

require() is identical to include() except upon failure it will also produce a fatal E_COMPILE_ERROR level error. In other words, it will halt the script whereas include() only emits a warning (E_WARNING) which allows the script to continue.
See the include() documentation for how this works.

他们的原理是:把被include的文件按照HTML去解析,然后把输出内容替代include语句的位置。

这里有 Laruence 的一篇文章可以参考 http://www.laruence.com/2010/05/04/14...

用户头像 回复 2012年 12月1日 @ Apple 上等兵 (542 威望)
提一个问题:

相关问题

0 投票
1 回复 27 阅读
用户头像 提问 2012年 12月1日 @ 阿尔托莉雅 下士 (587 威望)
0 投票
1 回复 51 阅读
+1 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Scorpio 上等兵 (220 威望)
0 投票
1 回复 31 阅读
用户头像 提问 2014年 2月3日 @ Archer 上等兵 (494 威望)
0 投票
1 回复 40 阅读
用户头像 提问 2012年 12月1日 @ dongxl 上等兵 (120 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...