实测在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调用Oracle存储过程
Oct 09 PHP
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
Laravel实现autoload方法详解
May 07 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
PHP强制转化的形式整理
May 22 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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 header()函数使用说明
2008/07/10 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php页面缓存方法小结
2015/01/10 PHP
33道php常见面试题及答案
2015/07/06 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
phpwind放自动注册方法
2006/12/02 Javascript
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
python执行get提交的方法
2015/04/29 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python实现分数序列求和
2020/02/25 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
python实现socket简单通信的示例代码
2021/04/13 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫