实测在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 不同编码下的字符串长度区分
Sep 26 PHP
PHP下常用正则表达式整理
Oct 26 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
php数组中包含中文的排序方法
Jun 03 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
php创建多级目录的方法
Mar 24 PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP 引用是个坏习惯
2010/03/12 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
python实现感知器
2017/12/19 Python
Python多进程原理与用法分析
2018/08/21 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
军神教学反思
2014/02/04 职场文书
文明寄语大全
2014/04/11 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书