宝马娱乐在线112222 > 网络应用 > php include和require的区别深入解析

原标题:php include和require的区别深入解析

浏览次数:118 时间:2019-10-01

 

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

例子 16-4. 函数中的包括

复制代码 代码如下:

<?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;
}

?>   

复制代码 代码如下:

例子 16-2. 基本的 require() 例子

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

例子 16-5. 通过 http 进行的 include()

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

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

例子12-7. include() 和return() 语句
return.php

相关信息参见使用远程文件,fopen() 和 file()。

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

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

?> 

复制代码 代码如下:

例子 16-6. include() 与条件语句组

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

vars.php

test.php

return.php

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

<?php
require_once("a.php"); // this will include a.php
require_once("a.php"); // this will include a.php again on windows!
?> 

例子12-5. 通过HTTP 进行的include()

 

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

require()
require() 语句包括并运行指定文件。

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

注: 由于这是一个语言结构而非函数,因此它无法被“变量函数”调用。

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

注: 由于这是一个语言结构而非函数,因此它无法被“变量函数”调用。
require_once()
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。有关此语句怎样工作参见 require() 的文档。

<?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
include_once("a.php"); // this will include a.php
include_once("a.php"); // this will include a.php again on windows!
?>   

nclude() The include() 语句包括并运行指定文件。

例子 16-3. 基本的 include() 例子

复制代码 代码如下:

例子 16-7. include() 和 return() 语句

testreturns.php

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

复制代码 代码如下:

更多例子参见 include() 文档。

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

警告
windows 版本的 php 在 4.3.0 版之前不支持本函数的远程文件访问,即使 allow_url_fopen 选项已被激活。  

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

include()
include() 语句包括并运行指定文件。

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

使用 require_once() 和 include_once() 的例子见最新的 php 源程序发行包中的 pear 代码。

<?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';

<?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
$foo = include 'return.php';
echo $foo; // prints 'PHP'
$bar = include 'noreturn.php';
echo $bar; // prints 1
?>

require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。

例子12-3. 基本的 include() 例子
vars.php

因为 include() 和 require() 是特殊的语言结构,在条件语句中使用必须将其放在语句组中(花括号中)。

复制代码 代码如下:

本文由宝马娱乐在线112222发布于网络应用,转载请注明出处:php include和require的区别深入解析

关键词:

上一篇:Java基础复习笔记系列 三

下一篇:没有了