php: include一个封装函数的文件(里面只封装函数),并用调用的函数使用不了global后变量(高手帮忙)

include_onceSYSTEM_ROOTPATH.'/include/global.functions.php';$ConnectMysql=newDatabase... include_once SYSTEM_ROOTPATH . '/include/global.functions.php';

$ConnectMysql = new DatabaseDriver_MySql ( $database_cfg );
$Memcache=new _MemCache('tianqiyubao');
$header_weatherInfo = GetCurrentByIpToArea();

其中GetCurrentByIpToArea函数定义在'/include/global.functions.php'里。源码如下:

function GetCurrentByIpToArea(){
global $Memcache;
if( $Memcache)print_r($Memcache);
else echo "<script>alert('mencahe不存在');</script>" ;
// 这里用if($Memcache) 语句判断时执行的是else语句
}
PS :同行者可以多交流,本人QQ017206408
展开
 我来答
nbyh2012
2013-06-01 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:804万
展开全部

你确定$Memcache真的是全局变量吗?在定义$Memcache后增加一段代码

var_dump($GLOBALS);exit;

然后看看输出的数组里有没有Memcache键。

因为你没有提到包含global.functions.php的文件是否被其他文件包含。假设这个文件叫example.php,被index.php包含

<?php
# index.php
function main(){
    require 'example.php';
}
main();

这种情况下$Memcache不是全局变量,自己想想为什么。


给你2种解决方法

# 方法一
$Memcache=new _MemCache('tianqiyubao');
$GLOBALS['Memcache'] = $Memcache;
# 方法二
global $Memcache;
$Memcache=new _MemCache('tianqiyubao');
更多追问追答
追问

求解答,第一次在百度提问,不明白的地方多谅解

追答
嗯,我不是说global.functions.php被其他文件调用,而是
include_once SYSTEM_ROOTPATH . '/include/global.functions.php';

$ConnectMysql = new DatabaseDriver_MySql ( $database_cfg );
$Memcache=new _MemCache('tianqiyubao');
$header_weatherInfo = GetCurrentByIpToArea();

是否被别的代码调用,然后再调用GetCurrentByIpToArea函数。
我建议你先测试我的第一段代码,确认$Memcache是否为全局变量。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式