实测在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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
js下函数般调用正则的方法附代码
Jun 22 PHP
php 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
PHP运行模式汇总
Nov 06 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
php进行md5加密简单实例方法
Sep 19 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中的流(streams)浅析
2015/07/02 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
非常实用的php验证码类
2016/05/15 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
社区敬老月活动实施方案
2014/02/17 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
高中生操行评语
2014/04/25 职场文书
竞选学委演讲稿
2014/09/13 职场文书
2014年工程部工作总结
2014/11/25 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python