【问题标题】:Strict standards: Non-static method should not be called statically, assuming $this from incompatible context in php file [duplicate]严格标准:不应静态调用非静态方法,假设 $this 来自 php 文件中不兼容的上下文 [重复]
【发布时间】:2016-04-27 02:25:26
【问题描述】:

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

【问题讨论】:

  • 请发布出现此错误的代码行,或在您的代码中出现此错误的一些指示符。我假设它在您包含的文件之一中。
  • 根据浏览器的输出,我认为错误的来源来自这个文件require_once('../admin/functions/api/lists.php');,我已经编辑了我的问题以包含显然导致错误的代码行
  • 你也可以在那个方法中发布代码吗?

标签: php android json


【解决方案1】:

这段代码是从一个类中复制而来的:

$userid = $this->userid;

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

只需删除这 3 行:

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

【讨论】:

  • 你建议我如何修改我的代码以获取 $this 的值?
  • 我试图删除这三行,但错误仍然存​​在,Non-static method API_USERS::getRecordByID() should not be called statically
  • 对不起!我错过了。编辑了我的问题以包含它:-)
  • 不,不是,你只是在你的问题结束时放弃了它,断章取意,以显示“这一行导致错误”
【解决方案2】:

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

public static function getRecordByID() {
...
}

或者你应该在实例化 API_USERS 类之后调用它:

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

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多