实测在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 相关文章推荐
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
php实例分享之mysql数据备份
May 19 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
php获取url参数方法总结
Nov 13 PHP
php字符串过滤与替换小结
Jan 26 PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 PHP
PHP中文乱码解决方案
Mar 05 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
javascript实现日历效果
2019/06/17 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
化工专业自荐书
2014/06/16 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
公司2014年度工作总结
2014/12/10 职场文书
放牛班的春天观后感
2015/06/01 职场文书
安全学习心得体会范文
2016/01/18 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
AngularJS实现多级下拉框
2022/03/25 Javascript
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL