我们为大家总结的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、所有在被包含文件中定义的函数在被包含后,在包含文件里都具有全局作用域。

最新文章

  1. Leetcode Implement Queue using Stacks
  2. 操作数据库mysql
  3. PPK谈JS笔记第一弹
  4. BZOJ 2115 【Wc2011】 Xor
  5. CentOS7安装MariaDB10.1.14
  6. java文件和文件夹复制、删除、移动操作
  7. iOS运行时 -- Runtime(摘抄自网络)
  8. 《javascript高级程序设计》第八章 The Browser Object Model
  9. Python的numpy库下的几个小函数的用法
  10. step2 uboot tag存储主要部分代码
  11. 账户管理groupadd groupmod groupdel usermod usermod userdel
  12. MongoDB的mongos实例因无法分配mlock内存挂掉
  13. MYSQL数据库学习十三 使用MySQL常用函数
  14. 爬虫之正则和xpath
  15. ASP .NET Core HTTP Error 502.5 – Process Failure
  16. JQuery 中的选择器
  17. java第四章接口
  18. 学习记录(一)之h5_canvas
  19. IP核引发的关于定,浮点数的认识
  20. springboot(十八):解决跨域问题

热门文章

  1. JS入门学习,写一个简单的图片库
  2. Let it go.Let it be.Keep it up!
  3. NYOJ 105
  4. Strust2初之体验
  5. Hololens入门之语音识别(语音命令)
  6. quartz集群分布式(并发)部署解决方案-Spring
  7. VPS搭建VPN、BLOG
  8. Fullscreen API 全屏显示网页
  9. codevs 1536 海战
  10. 搭建TFS 2015 Build Agent环境(二)