首頁  >  問答  >  主體

請教PHP不同環境出現Non-static method 錯誤問題

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));

   = 1;

     $ret[] = $result;   

     }catch (Exception $e){

        ************* ***

    }

    return $result;

}

service.inc.php文件

#service.inc.php文件

#<?php

define("WG_SERVER_BASE",dirname(__FILE__) . "/");

if (isset($GLOBALS[' includefiles'.__FILE__])){

    return;

}else{

#     $GLOBALS['includefiles'.__FILE__ __autoload($class_name) {

     //判斷檔案是否存在

     if(strpos($class_name,"Service")!==false){

#   WG_SERVER_BASE. 'service/'.$class_name.'.php';

         }else if(strpos($class_name,"API")!==false){# . 'api/'.PLATFORM_TYPE."/".$class_name.'.php';

         }else if(strpos($class_name,"Data")!==false){

         $fileUrl = WG_SERVER_BASE. 'data/'. ##     }else{

          $fileUrl = WG_SERVER_BASE.$class_name.'.php';

     }

#o> ){

       require $fileUrl;

#     }

}

date_default_timezone_set('Etc/GMT-8');# ##.

PH環境5.4以上報錯,5.2卻正常,求教如何相容PHP5.2--5.6環境而不出錯? ? ? ,錯誤代碼:

Strict standards: Non-static method Command::call() should not be called statically in ***/Gateway.php on line 13

#Strict standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method ******** should not be called statically in ***********


#Warning: Cannot modify header information - headers already sent by (output started at **********Command.php:62) in *************\Gateway.php on line 16


虎威虎威2421 天前4171

全部回覆(2)我來回復

  • 虎威

    虎威2018-03-27 11:36:28

    問題補充:如果無法相容5.2--5.6,那請教如何將上面的可以在5.2環境下正常運作的程式碼改造成5.4以上可執行?

    回覆
    0
  • 好人二狗

    $obj = new Command; $obj->call(); 這樣調用試試

    好人二狗 · 2018-03-29 12:24:01
  • 取消回覆