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

Posted

技术标签:

【中文标题】WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串【英文标题】:WordPress: Catchable fatal error: Object of class stdClass could not be converted to string 【发布时间】:2017-11-10 11:10:42 【问题描述】:

我正在尝试使用 WordPress 的核心功能 wp_remote_post 将数据发布到服务器并从那里获取响应。我对 php 和 WordPress 还很陌生。当我运行以下代码时,我得到 ​​p>

可捕获的致命错误: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"   

我做错了什么,正确的做法是什么?

【问题讨论】:

编辑您的问题以添加带有行号的完整错误消息。 @mmm 添加了带有行号的完整错误消息。 @JordiNebot 尝试了您的建议,但没有成功! :( 仍然出现同样的错误。 您能否确认发布的代码来自错误中提到的文件?因为这对我来说没有意义...... 是的,错误的位置和代码所在的文件是一样的。 【参考方案1】:

您的帖子似乎没有显示您实际将对象转换为字符串的部分。

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

不要尝试将 stdClass(或数组)用作字符串。按原样处理。

【讨论】:

【参考方案2】:

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

【讨论】:

谢谢!从(对象)响应中删除类型转换后,现在我得到Notice: Array to string conversion in /var/www/wp-projects/csrvtool.com/wp-content/themes/yrc_csrvtool/ajax.php on line 146 Array 你能 var_dump $response 吗?

以上是关于WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 模板 - “可捕获的致命错误:__PHP_Incomplete_Class 类的对象无法转换为字符串”

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

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

如何在 PHP 类型提示中捕获“可捕获的致命错误”?

PHP:异常和可捕获的致命错误有啥区别?

可捕获的致命错误:在 json_decode