【荐】如何正确理解PHP之include,include_once,require,require_once等包含作用域

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

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

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

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

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

<?php
function foo() {
	global $color;
	include ‘vars.php‘;
	echo "A $color $fruit";
}

foo(); // A green apple
echo "A $color $fruit"; // A green
?>

由此例可看出:

(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:函数、类的作用域

<?php
class ClassB {
	/**
	 * constructor
	 */
	public function __construct() {

	}

	/**
	 * destructor
	 */
	public function __destruct() {

	}

	public function printit() {
		echo ‘print it in ClassB.<br />‘;
	}
}

function show_func_included() {
	echo ‘show_func_included<br/>‘;
}
?>

<?php
function include_class() {
	include(‘classb.php‘);
}
include_class();
$objB = new ClassB();
$objB->printit(); // print it in ClassB.
show_func_included() // show_func_included
?>

所有在被包含文件中定义的函数在被包含后,在包含文件里都具有全局作用域(相当于把“函数”、“”的代码附加到包含文件的头部)。

结论:
1、被包含文件的变量的PHP include作用域遵从(不改变)包含文件所在处的作用域。
2、所有在被包含文件中定义的函数在被包含后,在包含文件里都具有全局作用域。

时间: 2024-10-10 08:49:08

【荐】如何正确理解PHP之include,include_once,require,require_once等包含作用域的相关文章

include include_once require require_once

include require 共同点:包含并运行(包含进来的文件必须加<?php 包含文件 ?>,因为包含时,首先解析文件内容是普通字符串,遇见<?php 包含文件 ?>才会解析.),也可以理解为直接把include和require的代码直接复制到包含处. 不同点: include是包含的意思,如果没有找到包含文件,会报一个警告,然后试着往下运行. require是必须的意思,在找不到包含文件时,会报致命错误,并停止运行. include include_once区别 once:

php include include_once require require_once 的区别与联系

一.require 与 include 的区别: The require() function is identical to include(), except that it handles errors differently. If an error occurs, the include() function generates a warning, but the script will continue execution. The require() generates a fa

include 和 require 的理解与区别

文件的包含:Include / include_onceRequire /require_onceInclude 和require都是把一个页面引入到当前页面.俩个都是文件的引入,那怎么来理解"引入"呢? Include与require的理解 俩个都是把被包含文件的所有代码引入,替换include/require那一句.和直接把代码写在include那一句是一样的.Require作用也是把一个文件引入到当前文件.理解与include一样. Include与require的区别 答:in

包含文件函数include与require的区别

include或include_once一般用于动态包含,所谓动态包含就是根据不同条件包含不同文件 require或require_once一般用于静态包含,比如包含一个html文件的头部或者尾部 如:require_once footer.inc.php include和require可以包含多次,include_once和require_once只包含一次 包含文件函数include与require的区别,布布扣,bubuko.com

PHP include()和require()方法的区别

本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处.基本上就是,加载失败的处理方法,性能,以及使用弹性方面的不同. PHP的include()和require()是两种包含外部文件的方法,对于这两种方法有什么区别,很多初学者可能不是很明白.下面总结一下PHP include()和require()的区别: 1:加载失败的处理方式不同: include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行) require() :

if __name__ == &#39;__main__&#39; 如何正确理解

今天刷知乎,突然看到这个问题,发现很多人都是简单的回答了一下,对于很多人来说,更准确的说应该是大部分的 Python 初学者,这样的回答很容易让人理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def add(a, b):    return a + badd(1,2)#用于测试上面函数是否正常 这里就是一个求两数之和的函数,然后我在另一个文件中调用这个模块,这个时候就会把add(1,2)也运行,但是我是不希望运行add(1

TableViewCell reuse 重用 我认为的正确理解与使用方法

其实有点失望,因为用google搜索“uitableviewcell dequeueReusableCellWithIdentifier”出来一堆堆资深博主的文章.看了看,大部分都是在解决一个问题:使用重用时cell显示混乱的问题.该问题本身并不让我失望,失望的是博主们的解释. 首先,回顾一下UITableViewCell的重用,其基本逻辑就是tableView一开始会创建一屏幕的cell(如果有那么多)并把他们标记(Identifier),之后用户上下滑动tableView时,使用Identi

正确理解Python函数是第一类对象

正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性.那到底什么是第一类对象呢? 函数是对象 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性

PHP include、include_once,require、require_once的区别

大家都知道include和require都有个_once,但是烦我一开始并不知道有什么用(php手册的看不明白)于是,就研究出来了 举个栗子: 1.php <?php include('A.php'); include('B.php'); include('C.php'); ?> B.php <?php include('C.php'); ?> 这样的话a.php就会出错 如果我们把1.php中的 include('B.php'); 改成 include_once('A.php')