WordPress:可捕获的致命错误:类stdClass的对象无法转换为字符串

时间:2017-11-10 11:10:43

标签: php arrays wordpress

我正在尝试使用WordPress的核心功能wp_remote_post将数据发布到服务器并从那里获得响应。我是PHP和WordPress的新手。当我运行以下代码时,我得到了

  

捕获致命错误:无法转换类stdClass的对象   串入   /var/www/wp-projects/csrvtool.com/wp-content/themes/yrc_csrvtool/ajax.php   第146行

是。这一行: tt_platform_api_wordpress_request($url_send, $arr, 'helper/ping', 120);

/**
 * Wordpress request handler
 * @param string $url
 * @param array $params
 * @param string $endpoint
 * @param int $timeout in seconds
 * @return object|string
 */

$url_send = "https://api.emailer.traveltime.com/v1/";

    $arr = array(
        'accessToken' => 'xxxx-xxxx-xxxx-xxxx',
        'username' => 'bob',
        'location' => array(
            'city' => 'Kansas City',
            'state' => 'Missouri'
        )
    );

    tt_platform_api_wordpress_request($url_send, $arr, 'helper/ping', 120);


    function tt_platform_api_wordpress_request($url, $params, $endpoint, $timeout) {
        if(!function_exists('wp_remote_post')) return FALSE;

        $response = wp_remote_post(
            $url,
            array(
                'timeout' => $timeout,
                'headers' => array( 'Content-Type' => 'application/json' ),
                'body' => json_encode( (object) $params )
            )
        );
        if( !is_wp_error($response) ) {
            return (object) array(
                'data' => $response['body'],
                'code' => $response['response']['code']
            );
        } else {
            return 'wp_remote_post returned an error for ' . $endpoint . ': ' . var_export($response, TRUE);
        }
    }

修改

我尝试var_dump ( (object) $arr );输出以下内容:

object(stdClass)#546 (3) { ["accessToken"]=> string(36) "76A4412A-4737-4DB7-9098-4D4698FE895C" ["username"]=> string(3) "bob" ["location"]=> array(2) { ["city"]=> string(11) "Kansas City" ["state"]=> string(8) "Missouri" } } 

请帮助我理解我做错了什么以及做错的正确方法。

2 个答案:

答案 0 :(得分:0)

您的帖子似乎没有显示您将对象实际投射到字符串的部分。

根据你的代码,你可能正在使用tt_platform_api_wordpress_request的结果,这是stdClass(成功时)。也许你正在回应它,或者将它连接起来或者将它传递给其他将它视为字符串的函数。您的代码未显示此内容。

不要尝试将stdClass(或数组)用作字符串。处理它就像它一样。

答案 1 :(得分:-1)

看起来您正在对对象进行类型转换响应,然后尝试将其作为数组进行访问。删除(对象)并将响应用作常规数组。希望有所帮助。