实测在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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
php微信公众号开发之简答题
Oct 20 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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
Zerg建筑一览
2020/03/14 星际争霸
php设计模式 Command(命令模式)
2011/06/26 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript中的闭包
2016/02/24 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
django1.11.1 models 数据库同步方法
2018/05/30 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
课例研修方案
2014/05/31 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书