实测在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程序
Oct 09 PHP
一周学会PHP(视频)Http下载
Dec 12 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
May 07 PHP
php命名空间学习详解
Feb 27 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
WAF的正确bypass
Jan 05 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 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运行模式汇总
2016/11/06 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
个人实用简单的自我评价
2013/10/19 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
电焊工岗位职责
2014/03/06 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
体育教师求职信
2014/05/24 职场文书
中秋手机店促销方案
2014/06/16 职场文书
2014年调度员工作总结
2014/11/19 职场文书
歌剧魅影观后感
2015/06/05 职场文书
企业催款函范本
2015/06/24 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android