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

WBOY
Freigeben: 2016-06-06 20:52:38
Original
1196 Leute haben es durchsucht

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

$config = new Zend_Config(require 'config.php');
Nach dem Login kopieren
Nach dem Login kopieren

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

int(1)
Nach dem Login kopieren
Nach dem Login kopieren

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

...
Nach dem Login kopieren
Nach dem Login kopieren

请问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);
}
Nach dem Login kopieren
Nach dem Login kopieren

情形1

// test.php 1
return 123;
Nach dem Login kopieren
Nach dem Login kopieren
// output 1
int(123)
Nach dem Login kopieren
Nach dem Login kopieren

情形2

// test.php 2
echo 123;
Nach dem Login kopieren
Nach dem Login kopieren
// output 2
123int(1)
Nach dem Login kopieren
Nach dem Login kopieren

情形3

// test.php 3
echo 123;
die;
Nach dem Login kopieren
Nach dem Login kopieren
// output 3
123
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

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

$config = new Zend_Config(require 'config.php');
Nach dem Login kopieren
Nach dem Login kopieren

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

int(1)
Nach dem Login kopieren
Nach dem Login kopieren

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

...
Nach dem Login kopieren
Nach dem Login kopieren

请问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);
}
Nach dem Login kopieren
Nach dem Login kopieren

情形1

// test.php 1
return 123;
Nach dem Login kopieren
Nach dem Login kopieren
// output 1
int(123)
Nach dem Login kopieren
Nach dem Login kopieren

情形2

// test.php 2
echo 123;
Nach dem Login kopieren
Nach dem Login kopieren
// output 2
123int(1)
Nach dem Login kopieren
Nach dem Login kopieren

情形3

// test.php 3
echo 123;
die;
Nach dem Login kopieren
Nach dem Login kopieren
// output 3
123
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage