Call to a member function valid() on boolean這是出了什麼錯誤?

來源:互聯網
上載者:User
我把一段代碼從thinkphp 3.1 移植到 thinkphp 3.2 ,然後調整的時候出現了這麼一個錯誤,找了好多都沒找到。

public function init() {        $config = M ( "Wxconfig" )->where ( array (                "id" => "1"         ) )->find ();        $options = array (                'token' => $config ["token"], // 填寫你設定的key                'encodingaeskey' => $config ["encodingaeskey"], // 填寫加密用的EncodingAESKey                'appid' => $config ["appid"], // 填寫進階調用功能的app id                'appsecret' => $config ["appsecret"], // 填寫進階調用功能的密鑰                );        $weObj = A('Api/Wechat ( $options )');        return $weObj;    }    public function index() {        $weObj = $this->init();        $weObj -> valid ();

下面是Api/Wechat中的那個 valid方法:

/**     * For weixin server validation     * @param bool $return 是否返回     */    public function valid($return=false)    {        $encryptStr="";        if ($_SERVER['REQUEST_METHOD'] == "POST") {            $postStr = file_get_contents("php://input");            $array = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);            $this->encrypt_type = isset($_GET["encrypt_type"]) ? $_GET["encrypt_type"]: '';            if ($this->encrypt_type == 'aes') { //aes加密                $this->log($postStr);                $encryptStr = $array['Encrypt'];                $pc = new Prpcrypt($this->encodingAesKey);                $array = $pc->decrypt($encryptStr,$this->appid);                if (!isset($array[0]) || ($array[0] != 0)) {                    if (!$return) {                        die('decrypt error!');                    } else {                        return false;                    }                }                $this->postxml = $array[1];                if (!$this->appid)                    $this->appid = $array[2];//為了沒有appid的訂閱號。            } else {                $this->postxml = $postStr;            }        } elseif (isset($_GET["echostr"])) {            $echoStr = $_GET["echostr"];            if ($return) {                if ($this->checkSignature())                    return $echoStr;                else                    return false;            } else {                if ($this->checkSignature())                    die($echoStr);                else                    die('no access');            }        }        if (!$this->checkSignature($encryptStr)) {            if ($return)                return false;            else                die('no access');        }        return true;    }

這是什麼問題TAT

回複內容:

我把一段代碼從thinkphp 3.1 移植到 thinkphp 3.2 ,然後調整的時候出現了這麼一個錯誤,找了好多都沒找到。

public function init() {        $config = M ( "Wxconfig" )->where ( array (                "id" => "1"         ) )->find ();        $options = array (                'token' => $config ["token"], // 填寫你設定的key                'encodingaeskey' => $config ["encodingaeskey"], // 填寫加密用的EncodingAESKey                'appid' => $config ["appid"], // 填寫進階調用功能的app id                'appsecret' => $config ["appsecret"], // 填寫進階調用功能的密鑰                );        $weObj = A('Api/Wechat ( $options )');        return $weObj;    }    public function index() {        $weObj = $this->init();        $weObj -> valid ();

下面是Api/Wechat中的那個 valid方法:

/**     * For weixin server validation     * @param bool $return 是否返回     */    public function valid($return=false)    {        $encryptStr="";        if ($_SERVER['REQUEST_METHOD'] == "POST") {            $postStr = file_get_contents("php://input");            $array = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);            $this->encrypt_type = isset($_GET["encrypt_type"]) ? $_GET["encrypt_type"]: '';            if ($this->encrypt_type == 'aes') { //aes加密                $this->log($postStr);                $encryptStr = $array['Encrypt'];                $pc = new Prpcrypt($this->encodingAesKey);                $array = $pc->decrypt($encryptStr,$this->appid);                if (!isset($array[0]) || ($array[0] != 0)) {                    if (!$return) {                        die('decrypt error!');                    } else {                        return false;                    }                }                $this->postxml = $array[1];                if (!$this->appid)                    $this->appid = $array[2];//為了沒有appid的訂閱號。            } else {                $this->postxml = $postStr;            }        } elseif (isset($_GET["echostr"])) {            $echoStr = $_GET["echostr"];            if ($return) {                if ($this->checkSignature())                    return $echoStr;                else                    return false;            } else {                if ($this->checkSignature())                    die($echoStr);                else                    die('no access');            }        }        if (!$this->checkSignature($encryptStr)) {            if ($return)                return false;            else                die('no access');        }        return true;    }

這是什麼問題TAT

$weObj = A('Api/Wechat ( $options )');

Thinkphp A 函數不是這樣調用吧

意思是說現在版本的TP的init方法在你這裡的代碼中沒有返回對象,而是返回了布爾值,很可能是false;

跟蹤一下3.2版本的A方法:

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.