検索

ホームページ  >  に質問  >  本文

さまざまな PHP 環境での非静的メソッドのエラーについて教えてください。

コードは

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 コマンド{

Public 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; ***

}

return $result;

}

service.inc. php document

<?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){

. '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. '.'. ){

require $fileUrl;

}

}

date_default_timezone_set('Etc/GMT-8');

}

PH 環境 5.4 以降ではエラーが報告されますが、5.2 ではエラーが報告されます。 PHP5.2~5.6環境にエラーなく互換させるにはどうすればよいでしょうか? ? ? 、エラー コード:

厳格な標準: 非静的メソッド Command::call() で静的に呼び出すべきではありません ***/Gateway.php の 13 行目

厳格な標準: call_user_func_array() が期待するもの パラメータ 1 は有効なコールバック、非静的メソッドである必要があります ******** は ***********


警告: 変更できませんヘッダー情報 - ヘッダー によってすでに送信されました (出力は に開始されました) **********Command.php:62) 内 *************\Gateway.php 16 行目

虎威虎威2467日前4222

全員に返信(2)返信します

  • 虎威

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

    補足質問: 5.2〜5.6と互換性がない場合、5.2環境で正常に実行できる上記のコードを5.4以降で実行できるように変換する方法を教えてください。

    返事
    0
  • 好人二狗

    $obj = 新しいコマンド; $obj->call(); このように呼んでみてください

    好人二狗 · 2018-03-29 12:24:01
  • キャンセル返事