开发者社区> 问答> 正文

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

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

$config = new Zend_Config(require 'config.php');
自己也进行了一些尝试:
var_dump(require 'test.php')

  1. 如果没有return语句,输出为:

int(1)

  1. 如果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

展开
收起
小旋风柴进 2016-06-08 16:17:41 2013 0
1 条回答
写回答
取消 提交回答
  • 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语句的位置。

    2019-07-17 19:32:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载