php5.2.17下代码运行正常,
php5.4以上就报错。
源码如下:
入口Gateway.php文档:
<?php require dirname(__FILE__) . '/Command.php';
$d=$_POST['data'];
if(get_magic_quotes_gpc()){
$d=stripslashes($d);
}
$param = json_decode($d);
$ret = Command::call($param);
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
echo json_encode($ret);
?>
Commadn.php文档:
<?php
require dirname(__FILE__) . '/service.inc.php';
class Command{
pulibic function call($params){
$result = self::callMethod(*********);
return $result;
}
private function callMethod(***){
try {
if(count($params)>0){
$result=call_user_func_array(Array($classStr,$funcStr),$params);
}else{
$result=call_user_func(Array($classStr,$funcStr));
}
$ret[] = 1;
$ret[] = $result;
}catch (Exception $e){
****************
}
return $result;
}
service.inc.php文档
<?php
define("WG_SERVER_BASE",dirname(__FILE__) . "/");
if (isset($GLOBALS['includefiles'.__FILE__])){
return;
}else{
$GLOBALS['includefiles'.__FILE__]=true;
function __autoload($class_name) {
//判断文件是否存在
if(strpos($class_name,"Service")!==false){
$fileUrl = WG_SERVER_BASE. 'service/'.$class_name.'.php';
}else if(strpos($class_name,"API")!==false){
$fileUrl = WG_SERVER_BASE. 'api/'.PLATFORM_TYPE."/".$class_name.'.php';
}else if(strpos($class_name,"Data")!==false){
$fileUrl = WG_SERVER_BASE. 'data/'.$class_name.'.php';
}else{
$fileUrl = WG_SERVER_BASE.$class_name.'.php';
}
if(file_exists($fileUrl)){
require $fileUrl;
}
}
date_default_timezone_set ('等/GMT-8');
}
##PH环境5.4以上报错,5.2却正常,求教如何兼容PHP5.2--5.6环境而不出错???,错误代码:
严格标准:非静态方法Command::call() 不应在中静态调用 ***/Gateway.php 第 13 行
##严格标准:call_user_func_array() 需要 参数1是一个有效的回调,非静态方法 ******** 不应在 ****************
问题补充:如果无法兼容5.2--5.6,那请教如何将上面的可以在5.2环境下正常运行的代码改造成5.4以上可执行?