بي أتش بي:خطأ فادح يمكن اكتشافه:لا يمكن تحويل كائن الفئة 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));
ربما كان هذا مصفوفة، ولكن يتم كتابته في كائن.وهكذا ينتهي بك الأمر مع stdClass.
هناك طريقة أخرى (وربما أفضل) للقيام بذلك وهي كتابة الإرجاع.بهذه الطريقة، لن تضطر إلى إنشاء مصفوفة جديدة لتمريرها لاحقًا كوسيطة:
$procID = (array) $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);
لا تنتمي إلى StackOverflow