بي أتش بي:خطأ فادح يمكن اكتشافه:لا يمكن تحويل كائن الفئة stdClass إلى سلسلة [مغلق]

StackOverflow https://stackoverflow.com/questions/5032687

  •  14-11-2019
  •  | 
  •  

سؤال

أحصل على التفريغ والخطأ التاليين عند تشغيل الكود المرفق.ما يثير حيرة من أمري هو أن $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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top