实测在class的function中include的文件中非php的global全局环境


Posted in PHP onJuly 15, 2013

测试代码1.php

<?php 
$g1 = 'g1'; 
class c{ 
function fun() { 
include('2.php'); 
echo "\n-----in class fun---\n"; 
global $g1; 
var_dump("\$g1 => ", $g1 
,'$g2 => ', $g2 
,'$gg2 => ', $gg2 
); 
echo "\n--------\n"; 
} 
} 
c::fun(); 
echo "\n--- in 1.php ----\n"; 
var_dump('$g1 => ', $g1 
,'$g2 => ', $g2 
,'$gg2 => ', $gg2); 
echo "\n--- ----\n";

代码2.php
<?php 
$g2 = 'g2'; 
global $gg2;//本环境下并非全局,需要提升 
$gg2 = 'gg2'; 
function g2fun() { 
global $g1, $g2, $gg2; 
echo "\n--- in g2fun ----\n"; 
var_dump('$g1 => ', $g1, '$g2 => ', $g2 
, '$gg2 => ', $gg2); 
echo "\n--- ----\n"; 
} 
g2fun(); 
echo "\n--- in 2.php ----\n"; 
var_dump('$g1 => ', $g1, '$g2 => ', $g2 
, '$gg2 => ', $gg2 
); 
echo "\n--- ----\n"; 
global $g1; 
echo "\n--- in 2.php global----\n"; 
var_dump('$g1 => ', $g1, '$g2 => ', $g2 
, '$gg2 => ', $gg2 
); 
echo "\n--- ----\n";

结果
--- in g2fun ---- 
string(7) "$g1 => " 
string(2) "g1" 
string(7) "$g2 => " 
NULL 
string(8) "$gg2 => " 
string(3) "gg2" 
--- ---- 
--- in 2.php ---- 
string(7) "$g1 => " 
NULL 
string(7) "$g2 => " 
string(2) "g2" 
string(8) "$gg2 => " 
string(3) "gg2" 
--- ---- 
--- in 2.php global---- 
string(7) "$g1 => " 
string(2) "g1" 
string(7) "$g2 => " 
string(2) "g2" 
string(8) "$gg2 => " 
string(3) "gg2" 
--- ---- 
-----in class fun--- 
string(7) "$g1 => " 
string(2) "g1" 
string(7) "$g2 => " 
string(2) "g2" 
string(8) "$gg2 => " 
string(3) "gg2" 
-------- 
--- in 1.php ---- 
string(7) "$g1 => " 
string(2) "g1" 
string(7) "$g2 => " 
NULL 
string(8) "$gg2 => " 
string(3) "gg2" 
--- ----

由此可见,
在class中include后,被include文件变量域已经变成func中了,非全局.
但是可以通过global提升.
一般被include文件在编写时,可能会由于没有注意到被include的情况,就觉得有点郁闷了.
PHP 相关文章推荐
PHP安装全攻略:APACHE
Oct 09 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
php中关于换行的实例写法
Sep 26 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
PHP7 弃用功能
Mar 09 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 #PHP
PHP 转义使用详解
Jul 15 #PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 #PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 #PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 #PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 #PHP
php图像处理函数大全(推荐收藏)
Jul 11 #PHP
You might like
如何实现php图片等比例缩放
2015/07/28 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Django 用户认证组件使用详解
2019/07/23 Python
Python连接字符串过程详解
2020/01/06 Python
python实现简单文件读写函数
2021/02/25 Python
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
请介绍一下Ant
2016/07/22 面试题
小加工厂管理制度
2014/01/21 职场文书
合伙协议书
2014/04/23 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
2015年服务员工作总结
2015/04/08 职场文书
代理词怎么写
2015/05/25 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
你真的会用Mysql的explain吗
2022/03/31 MySQL