【问题标题】:PHP: Catchable fatal error: Object of class stdClass could not be converted to string [closed]PHP:可捕获的致命错误:stdClass 类的对象无法转换为字符串 [关闭]
【发布时间】:2011-02-17 17:58:05
【问题描述】:

运行附加代码时出现以下转储和错误。我感到困惑的是 $procID 似乎是作为字符串返回的,但是一旦我尝试再次传递它,它就是一个对象?我如何让它成为/保持一个字符串?谢谢。

对象(stdClass)#2(1){ ["processId"]=> 字符串(13) “Genesis114001”} 字符串(311) "Genesis114001" 字符串 (293) " 创世纪 " 可捕获的致命错误:对象 类 stdClass 无法转换 串起来 C:\wamp\www\SugarCE\testSOAPShawn.php 在第 15 行
<?php
set_time_limit(0);
require_once('nusoap.php');
require_once('BenefitSOAP.php');  //WSDL to PHP Classes
$client = new SoapClient('C:\wsdl\BenefitDeterminationProcess_BenefitDialogueServiceSOAP.wsdl', array('trace' => 1));
$procID = $client->start(array("prefix"=>"Genesis"));
$respXML = $client->__getLastResponse();
$requXML = $client->__getLastRequest();
echo "<p/>";
var_dump($procID);
//echo "<p/>";
var_dump($respXML);
//echo "<p/>";
var_dump($requXML);
$exchange = $client->exchangeOptions(array("processId"=>$procID)); //LINE 15
$end = $client->stop(array("processId"=>$procID));
?>

【问题讨论】:

  • 您确实需要更好地格式化您的代码,这样人们就不必费力地理解它在做什么。

标签: php stdclass


【解决方案1】:

无论$client-&gt;start() 方法返回什么,它都被输入为一个对象。您可以使用-&gt; 运算符访问对象的属性:

$procID = $client->start(array("prefix"=>"Genesis"));

...

$exchange = $client->exchangeOptions(array("processId"=>$procID->processId));

这可能是一个数组,但正在输入到一个对象中。因此,您最终得到了stdClass

另一种(可能更好)的方法是输入返回值。这样,您不必为以后作为参数传递新数组:

$procID = (array) $client->start(array("prefix"=>"Genesis"));

...

$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);

【讨论】:

  • 谢谢。这有点用,现在我遇到了:致命错误:未捕获的 SoapFault 异常:[HTTP] 错误在 C:\wamp\www\SugarCE\testSOAPShawn.php:29 中获取 http 标头:29 堆栈跟踪:#0 [内部函数]: SoapClient->__doRequest('10.50.10...', '', 1, 0) #1 [内部函数]: SoapClient->__call('establishIdenti... ', Array) #2 C:\wamp\www\SugarCE\testSOAPShawn.php(29): SoapClient->establishIdentity(Array) #3 {main} throw in C:\wamp\www\SugarCE\testSOAPShawn.php 上线29
  • 该错误与此问题完全无关。您正在使用的库或您使用它的方式存在问题。在不知道其中任何一个事实的情况下,我都无法真正为您提供任何建议。我建议就此提出一个新问题 - 但请务必在此处接受答案。
  • @Chris 谢谢你,你的解释很有道理,但我对你的解决方案有疑问。我已经尝试了两种方法,但我仍然得到 stdClass 无法转换为字符串。这是我得到的:$res_array = (array) $php_functions-&gt;run_query('SHOW TABLES'); echo implode(',', $res_array);run_query 生成一个查询结果数组。
猜你喜欢
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多