实测在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 var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
关于尾递归的使用详解
May 02 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
php ios推送(代码)
Jul 01 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
PHP 7.0.2 正式版发布
Jan 08 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
PHP微商城开源代码实例
Mar 27 PHP
php7下的filesize函数
Sep 30 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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调用数据库的存贮过程!
2006/10/09 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
Javascript - HTML的request类
2007/01/09 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
python通过cython加密代码
2020/12/11 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
2014年纳税评估工作总结
2014/12/23 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python