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 展开
$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 展开
1个回答
展开全部
你确定$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是否为全局变量。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询