严格的标准:非静态方法不应该静态调用,假设$this来自 php 文件中不兼容的上下文


Strict standards: Non-static method should not be called statically, assuming $this from incompatible context in php file

我对PHP有基本的了解,但是从我的PHP Web服务中检索JSON对象时遇到错误

Strict standards: Non-static method API_USERS::getRecordByID() should not be called statically, assuming $this from incompatible context in .../lists.php on line 1387

因此,由于此错误,我无法正确解析我的 JSON 对象,并在我的 Android Studio logcat 中收到此错误

Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

有没有办法摆脱这个错误?这是我尝试使用的 PHP:

  <?php
    define('IEM_PATH', '../admin/com');
    require_once('../admin/includes/config.php');
    require_once('../admin/com/lib/IEM.class.php');
    require_once ('../admin/com/lib/IEM/DBFACTORY.class.php');
    require_once ('../admin/com/lib/IEM/baseAPI.class.php');
    require_once ('../admin/com/lib/API/USERS.class.php');
    require_once ('../admin/com/lib/IEM/baseRecord.class.php');
    require_once ('../admin/com/lib/record/Users.class.php');
        function GetLists($userid = 0, $getUnconfirmedCount = false) {
            $userid = $_REQUEST['userID'];
            if (!$userid) {
                trigger_error('This user object is not loaded with any user.... You will need to supply the userid as a parameter.', E_USER_NOTICE);
                return false;
            }

            if (!$userid) {
                $userid = $this->userid;
            }
            require_once('../admin/functions/api/lists.php');
            $listapi = new Lists_API();
            $returnA =  $listapi->GetListByUserID($userid, $getUnconfirmedCount);
            $returnResult1 = array();
            foreach ($returnA as $key => $value) { 
                //$lists[] = $key;
                $returnResult["contactList"][] = array("listID" => $returnA[$key]['listid'], "name" => $returnA[$key]['name']);
            }
            $returnResult["success"] = 1;
            echo json_encode($returnResult);
        }
        GetLists();

这是我认为是错误来源的代码(第 1387 行)

$user = API_USERS::getRecordById($userid);

此代码是从类复制的:

$userid = $this->userid;

当您不在(非静态)成员函数中时,您没有$this。

只需删除这 3 行:

    if (!$userid) {
        $userid = $this->userid;
    }

你的方法getRecordByID()应该像这样声明:

public static function getRecordByID() {
...
}

或者你应该在实例化API_USERS类之后调用它,如下所示:

$instance = new API_USERS();
$instance->getRecordByID();