Heim  >  Fragen und Antworten  >  Hauptteil

Bitte informieren Sie mich über den Fehler bei der nicht statischen Methode in verschiedenen PHP-Umgebungen.

Der Code läuft normal unter

php5.2.17, aber bei

php5.4 und höher tritt ein Fehler auf.

Der Quellcode lautet wie folgt:

Entrance Gateway.php-Dokument:

<?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 Dokumentation:

<?php

require dirname(__FILE__) . '/service.inc.php';

class Command{

pulibic function call($params){

$result = self::callMethod (*********);

               return $result; 

                                                                                                                                   {

        $result=call_user_func_array(Array($classStr,$ funcStr),$params);

                                                                                       

$ ret [] = 1;

          $ret[] = $result;                                                                                                                                                                                                                          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) {} //Bestimmen Sie, ob die Datei existiert

                                                                                                                                                                       "API")!==false){

                  $fileUrl = 'api/'.PLATFORM_TYPE."/".$ Klassenname.'.php';

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

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

}

if(file_exists($fileUrl)) {

} require $fileUrl;

}

} _default_timezone_set('Etc/GMT-8') ;

}

In PH-Umgebung 5.4 und höher wird ein Fehler gemeldet, in 5.2 jedoch normal Wie kann ich ohne Fehler mit der PHP 5.2--5.6-Umgebung kompatibel sein? ? ? , Fehlercode:

Strenge Standards: Nicht statische Methode Command::call() sollte nicht statisch aufgerufen werden ***/Gateway.php in Zeile 13

Strenge Standards: call_user_func_array() erwartet Parameter 1 muss eine gültige, nicht statische Rückrufmethode sein ******** sollte nicht statisch aufgerufen werden in *************


Warnung: Header-Informationen können nicht geändert werden – Header bereits gesendet von (Ausgabe begann um **********Command.php:62) in *************Gateway.php in Zeile 16

虎威虎威2421 Tage vor4172

Antworte allen(2)Ich werde antworten

  • 虎威

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

    问题补充:如果无法兼容5.2--5.6,那请教如何将上面的可以在5.2环境下正常运行的代码改造成5.4以上可执行?

    Antwort
    0
  • 好人二狗

    $obj = new Command; $obj->call(); 这样调用试试

    好人二狗 · 2018-03-29 12:24:01
  • StornierenAntwort