سؤال

أرغب في إعادة كائن باستخدام Zend_Soap. أريد أيضًا الكائن المعطى في ملف WSDL. لكن لا يمكنني الحصول على كليهما للعمل معًا. إنه إما واحد أو آخر.

1. WSDL العمل ، ولكن الكائن لا يعود

إذا في PHPDOC من وظيفتي على البرنامج النصي لخادم الصابون ، أكتب

 @return Application_Model_Soap_Test

يمكنني رؤيته في ملف WSDL

<message name="getPostcodeOut">
    <part name="return" type="tns:Application_Model_Soap_Test"/>
</message>

ولكن عندما أقوم بتشغيل البرنامج النصي ، فإنه يعيد فئة فارغة:

stdClass Object
(
)

2. احصل على كائن ، ولكن WSDL خاطئ

إذا قمت بتغيير معلومات PHPDOC الخاصة بوظيفة الخادم إلى

@return mixed Application_Model_Soap_Test

أحصل على كائن مع المعلومات:

stdClass Object
(
    [name] => Fred
    [age] => 40
)

لكن ملف WSDL خاطئ

<message name="getPostcodeOut">
    <part name="return" type="xsd:anyType"/>
</message>

أيه أفكار؟ شكرًا.

هل كانت مفيدة؟

المحلول

تحتاج إلى تمرير متغير خيار "ClassMap" في العميل.

انظر على حد سواء http://www.php.net/manual/en/soapclient.soapclient.php و http://www.php.net/manual/en/soapclient.soapclient.php حول خيار "ClassMap" الذي تم تمريره في صفيف الخيار.

في الأساس ، يجب أن يكون صفيفًا يقوم بتخطيط الفصول الخاصة بك إلى الفئات المعرفة بأنها الكائنات التي تم إرجاعها في ملف WSDL.

نصائح أخرى

هل حاولت إيقاف التخزين المؤقت؟

في PHP كيف يمكنك مسح ذاكرة التخزين المؤقت WSDL؟

كان لي نفس المشكلة. كل طلب قمت به قد أعاد لي stdclass فارغة ، على الرغم من أن WSDL كان صحيحًا. بعد تعطيل التخزين المؤقت كان يعمل بشكل جيد بالنسبة لي. جربها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top