实测在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 相关文章推荐
实用函数5
Nov 08 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
PHP基础知识介绍
Sep 17 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
php curl 上传文件代码实例
Apr 27 PHP
PHP自毁程序(慎用)
Jul 09 PHP
php文件缓存方法总结
Mar 16 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP多维数组排序array详解
Nov 21 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
扩展你的 PHP 之入门篇
2006/12/04 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
理解javascript异步编程
2016/01/27 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python单例模式的两种实现方法
2017/08/14 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
python画折线图的程序
2018/07/26 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
简单的JAVA编程面试题
2013/03/19 面试题
酒店七夕情人节活动策划方案
2014/08/24 职场文书
2015年话务员工作总结
2015/04/29 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle