您的位置:首页 > 产品设计 > UI/UE

php中include、include_once、require、require_once等函数的异同

2017-04-08 13:37 501 查看
一:

1.include() 产生一个警告

2.require() 则导致一个致命错误

换句话说,如果你想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。

就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。可能效率上也略微高点。

注意:require() 无论如何都会包含文件,而include() 可以有选择地包含:
<?php
if(FALSE){
require('x.php');
}
if(FALSE){
include('s.php');
}
?>


二:

唯一区别是include_once/require_once会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含;否则,则包含该文件。

三:

我们为大家总结的PHP include作用域的问题包括:PHP include 变量作用域和函数的作用域等方面的问题。希望对大家有所帮助。

很多程序员在使用PHP语言进行实际编程时,通常只会关注PHP函数能实现什么功能,但是都不会去深入的了解这个函数的具体含义及隐含的问题。我们今天就为大家介绍PHP include作用域的相关问题。

注意:本文档基于include叙述,但也适用于require。这两种结构除了在如何处理包含失败之外,其他完全一样:在包含失败 时,include()产生一个警告并继续执行,而require()则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用 require(),否则就用include()。

PHP include作用域1:变量的作用域

01
<?php
02
$color
=
'green'
;
03
$fruit
=
'apple'
;
04
?>
05
06
<?php
07
function
foo()
{
08
global
$color
;
09
include
'vars.php'
;
10
echo
"A
$color $fruit"
;
11
}
12
13
foo();
//
A green apple
14
echo
"A
$color $fruit"
;
//
A green
15
?>
由此例可看出:

(1). 被包含文件的变量的PHP include作用域遵从包含文件所在处的作用域。即在函数里使用include将其他文件的变量包含进来,这些变量的作用域为该函数内

(2). foo()函数外能打印出$color的值,并没有违反(1)的规定。那是因为函数开始已经声明$color为global (尽管foo()函数外并没有$color变量,此时的$color变量并不是vars.php里面的$color变量,而是一个强制声明为“全局”的新 变量,这时它还没有被赋值,当下面包含进vars.php后,根据(1)的原则,vars.php中的$color变量自动享有函数内的作用域,所以它的 值就是全局变量$color的值)

PHP include作用域2:函数、类的作用域

01
<?php
02
class
ClassB
{
03
/**
04
 
*
constructor
05
 
*/
06
public
function
__construct()
{
07
08
}
09
10
/**
11
 
*
destructor
12
 
*/
13
public
function
__destruct()
{
14
15
}
16
17
public
function
printit()
{
18
echo
'print
it in ClassB.<br />'
;
19
}
20
}
21
22
function
show_func_included()
{
23
echo
'show_func_included<br/>'
;
24
}
25
?>
26
27
<?php
28
function
include_class()
{
29
include
(
'classb.php'
);
30
}
31
include_class();
32
$objB
=
new
ClassB();
33
$objB
->printit();
//
print it in ClassB.
34
show_func_included()
//
show_func_included
35
?>
所有在被包含文件中定义的函数在被包含后,在包含文件里都具有全局作用域(相当于把“函数”、“”的代码附加到包含文件的头部)。

结论:

1、被包含文件的变量的PHP include作用域遵从(不改变)包含文件所在处的作用域。

2、所有在被包含文件中定义的函数在被包含后,在包含文件里都具有全局作用域。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐