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

WBOY
Release: 2016-06-06 20:52:38
Original
1164 people have browsed it

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

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

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

int(1)
Copy after login
Copy after login

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

...
Copy after login
Copy after login

请问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);
}
Copy after login
Copy after login

情形1

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

情形2

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

情形3

// test.php 3
echo 123;
die;
Copy after login
Copy after login
// output 3
123
Copy after login
Copy after login

回复内容:

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

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

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

int(1)
Copy after login
Copy after login

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

...
Copy after login
Copy after login

请问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);
}
Copy after login
Copy after login

情形1

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

情形2

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

情形3

// test.php 3
echo 123;
die;
Copy after login
Copy after login
// output 3
123
Copy after login
Copy after login

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...

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!