实测在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 htmlentities和htmlspecialchars 的区别
Aug 18 PHP
PHP 错误之引号中使用变量
May 04 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
php session 写入数据库
Feb 13 PHP
php中final关键字用法分析
Dec 07 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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中的integer类型使用分析
2010/07/27 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python制作词云的方法
2018/01/03 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
搞笑爱情保证书
2014/04/29 职场文书
以权谋私检举信范文
2015/03/02 职场文书
民事上诉状范文
2015/05/22 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js