PHP:キャッチ可能な致命的なエラー:クラス stdClass のオブジェクトを文字列に変換できませんでした [クローズ]
質問
添付のコードを実行すると、次のダンプとエラーが発生します。私が混乱しているのは、$procID が文字列として返されるように見えるのに、再度渡そうとするとすぐにオブジェクトになってしまうことです。文字列のまま/文字列のままにするにはどうすればよいですか?ありがとう。
object(stdClass)#2 (1) { ["processId"]=> string(13) "Genesis114001" } string(311) "Genesis114001" string(293) " Genesis " Catchable fatal error: Object of class stdClass could not be converted to string in C:\wamp\www\SugarCE\testSOAPShawn.php on line 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));
?>
解決
何があっても $client->start()
メソッドが返される場合、オブジェクトとして型指定されます。オブジェクトのプロパティにアクセスするには、 ->
オペレーター:
$procID = $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions(array("processId"=>$procID->processId));
これはおそらく配列ですが、オブジェクトに型付けされています。したがって、最終的には、 標準クラス.
これを行うもう 1 つの (そしておそらくより良い) 方法は、return を入力することです。こうすることで、後で引数として渡すために新しい配列を作成する必要がなくなります。
$procID = (array) $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);
所属していません StackOverflow