实测在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修改时间格式的代码
May 29 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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/08/08 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python的re正则表达式实例代码
2018/01/24 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
解决Python安装cryptography报错问题
2020/09/03 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
毕业生自我鉴定
2013/11/05 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
八月一日观后感
2015/06/10 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
一文搞懂MySQL索引页结构
2022/02/28 MySQL
SQL Server内存机制浅探
2022/04/06 SQL Server