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

WBOY
풀어 주다: 2016-06-06 20:52:38
원래의
1164명이 탐색했습니다.

在学习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
로그인 후 복사
로그인 후 복사

回复内容:

在学习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
로그인 후 복사
로그인 후 복사

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!