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 类的对象无法转换为字符串”