实测在class的function中include的文件中非php的global全局环境
2015-01-24信息快讯网
正如标题所言经测试的结果为:在class中include后,被include文件变量域已经变成func中了,非全局.但是可以通过global提升,感兴趣的朋友可以参考下哈,希望对大家有所帮助
测试代码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使用smtp发送支持附件的邮件示例
php实现上传图片生成缩略图示例
php使用curl和正则表达式抓取网页数据示例
PHP header()函数常用方法总结
开源php中文分词系统SCWS安装和使用实例
PHP扩展模块Pecl、Pear以及Perl的区别
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
php实现httpclient类示例
PHP包含文件函数include、include_once、require、require_once区别总结
php警告Creating default object from empty value 问题的解决方法
ThinkPHP使用UTFWry地址库进行IP定位实例
thinkphp验证码显示不出来的解决方法
php的declare控制符和ticks教程(附示例)
php的zip解压缩类pclzip使用示例
php function用法如何递归及return和echo区别
PHP 函数call_user_func和call_user_func_array用法详解
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
ie与session丢失(新窗口cookie丢失)实测及解决方案
Php output buffering缓存及程序缓存深入解析
PHP 转义使用详解
thinkphp 一个页面使用2次分页的实现方法
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
PHP 伪静态技术原理以及突破原理实现介绍
深入Nginx + PHP 缓存详解
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
PHP Class&Object -- 解析PHP实现二叉树
PHP Class&Object -- PHP 自排序二叉树的深入解析
解析func_num_args与func_get_args函数的使用
解析php中eclipse 用空格替换 tab键
解析php addslashes()与addclashes()函数的区别和比较
Function eregi is deprecated (解决方法)
解析php中call_user_func_array的作用
PHP 常用数组内部函数(Array Functions)介绍
PHP register_shutdown_function函数的深入解析