php include和require的区别深入解析

 更新时间:2013年06月17日 16:59:45   作者:  
本篇文章是对php中include与require的区别进行了详细的分析介绍,需要的朋友参考下
nclude()
The include() 语句包括并运行指定文件。

以下文档也适用于require()。这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用require()。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。

当一个文件被包括时,其中所包含的代码继承了include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。

例子12-3. 基本的 include() 例子
vars.php
复制代码 代码如下:

<?php
$color = 'green';
$fruit = 'apple';
?>

test.php
复制代码 代码如下:

<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>

如果include 出现于调用文件中的一个函数里,则被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样。所以它将遵循该函数的变量范围。

例子12-4. 函数中的包括
复制代码 代码如下:

<?php
function foo()
{
global $color;
include 'vars.php';
echo "A $color $fruit";
}
/* vars.php is in the scope of foo() so *
* $fruit is NOT available outside of this *
* scope. $color is because we declared it *
* as global. */
foo(); // A green apple
echo "A $color $fruit"; // A green
?>

当一个文件被包括时,语法解析器在目标文件的开头脱离PHP 模式并进入HTML 模式,到文件结尾处恢复。由于此原因,目标文件中应被当作PHP 代码执行的任何代码都必须被包括在有效的PHP 起始和结束标记之中。

如果“URL fopen wrappers”在PHP 中被激活(默认配置),可以用URL(通过HTTP)而不是本地文件来指定要被包括的文件。如果目标服务器将目标文件作为PHP 代码解释,则可以用适用于HTTP GET 的URL 请求字符串来向被包括的文件传递变量。严格的说这和包括一个文件并继承父文件的变量空间并不是一回事;该脚本文件实际上已经在远程服务器上运行了,而本地 脚本则包括了其结果。

警告
Windows 版本的PHP 目前还不支持该函数的远程文件访问,即使allow_url_fopen 选项已被激活。

例子12-5. 通过HTTP 进行的include()
复制代码 代码如下:

<?php
/* This example assumes that www.example.com is configured to parse .php *
* files and not .txt files. Also, 'Works' here means that the variables *
* $foo and $bar are available within the included file. */
// Won't work; file.txt wasn't handled by www.example.com as PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
// local filesystem.
include 'file.php?foo=1&bar=2';

// Works.
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt'; // Works.
include 'file.php'; // Works.
?>

相关信息参见使用远程文件,fopen() 和file()。
因为include() 和require() 是特殊的语言结构,在条件语句中使用必须将其放在语句组中(花括号中)。

例子12-6. include() 与条件语句组
复制代码 代码如下:

<?php
// This is WRONG and will not work as desired.
if ($condition)
include $file;
else
include $other;
// This is CORRECT.
if ($condition) {
include $file;
} else {
include $other;
}
?>

处理返回值:可以在被包括的文件中使用return() 语句来终止该文件中程序的执行并返回调用它的脚本。同样也可以从被包括的文件中返回值。可以像普通函数一样获得include 呼叫的返回值。

注: 在PHP 3 中,除非是在函数中调用否则被包括的文件中不能出现return。在此情况下return() 作用于该函数而不是整个文件。

例子12-7. include() 和return() 语句
return.php
复制代码 代码如下:

<?php
$var = 'PHP';
return $var;
?>

noreturn.php
复制代码 代码如下:

<?php
$var = 'PHP';
?>

testreturns.php
复制代码 代码如下:

<?php
$foo = include 'return.php';
echo $foo; // prints 'PHP'
$bar = include 'noreturn.php';
echo $bar; // prints 1
?>

$bar 的值为1 是因为include 成功运行了。注意以上例子中的区别。第一个在被包括的文件中用了return() 而另一个没有。其它几种把文件“包括”到变量的方法是用fopen(),file() 或者include() 连同输出控制函数一起使用。

相关文章

  • PHP学习笔记 用户注册模块用户类以及验证码类

    PHP学习笔记 用户注册模块用户类以及验证码类

    最近正在学习《PHP&MySQL范例精解》,刚刚看到第一张,关于用户注册模块的设计,这本书提供了很多可重用类,便于用于其它项目中。
    2011-09-09
  • php生成二维码的几种方式整理及使用实例

    php生成二维码的几种方式整理及使用实例

    本文整理了一些php生成二维码的方式:1.google开放api;2.php类库PHP QR Code;3.libqrencode;4.QRcode Perl CGI & PHP scripts感兴趣的朋友可以参考下哈
    2013-06-06
  • PHP实现生成二维码的示例代码

    PHP实现生成二维码的示例代码

    为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。本文将利用这些接口实现生成临时二维码和永久二维码,需要的可以参考一下
    2022-05-05
  • PHP中让json_encode不自动转义斜杠“/”的方法

    PHP中让json_encode不自动转义斜杠“/”的方法

    这篇文章主要给大家分享了PHP中如何让json_encode不自动转义斜杠“/”的两种方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-02-02
  • PHP屏蔽错误的方法总结

    PHP屏蔽错误的方法总结

    在本篇文章里小编给大家整理分享的是一篇关于PHP屏蔽错误的方法总结内容,有兴趣的朋友们可以学习下。
    2021-06-06
  • PHP递归遍历多维数组实现无限分类的方法

    PHP递归遍历多维数组实现无限分类的方法

    这篇文章主要介绍了PHP递归遍历多维数组实现无限分类的方法,涉及PHP递归操作遍历数组的相关技巧,在联动菜单及父子栏目设计等方面非常具有实用价值,需要的朋友可以参考下
    2016-05-05
  • hadoop常见错误以及处理方法详解

    hadoop常见错误以及处理方法详解

    本篇文章是对hadoop常见错误以及处理方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php图像处理函数大全(推荐收藏)

    php图像处理函数大全(推荐收藏)

    php图片处理代码分享,包括缩放、剪裁、缩放、翻转、旋转、透明、锐化等。需要的朋友可以参考下
    2013-07-07
  • php常用字符串处理函数实例分析

    php常用字符串处理函数实例分析

    这篇文章主要介绍了php常用字符串处理函数,以实例形式分析了chop()、get_html_translation_table()、htmlentities()及htmlspecialchars()等函数的具体用法,对于PHP的学习有着一定的学习与借鉴价值,需要的朋友可以参考下
    2014-11-11
  • php基于socket实现SMTP发送邮件的方法

    php基于socket实现SMTP发送邮件的方法

    这篇文章主要介绍了php基于socket实现SMTP发送邮件的方法,实例分析了php采用socket实现smtp发送邮件的原理与技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论