Re: Complex Types problem
[email protected] (Ammarmar)
| Newsgroups | php.soap |
|---|---|
| Message-ID | <[email protected]> |
Dnia 25-06-2007 o 09:44:54 "Dani Castaños" <[email protected]> napisał(a): > PHP CLIENT > ========== > $subscriber = array( 'age' => (Integer) 27 > , 'email' => (String) '[email protected]' > , 'name' => (String) 'Dani' > ); > ?> > Here you create ComplexType param as an array. > > PHP SERVER > ========== > function CreateSubscriber( $subscriber ) > { > $name = $subscriber['name']; > $email = $subscriber['email']; > $age = $subscriber['age']; > return 200; > }//function CreateSubscriber( $name ) Here you try to access this ComplexType also as an array. Because you created it as an array, it seems logical to do so. Well, it is not - ComplexType is in fact a counterpart of an object. While SOAPClient accepts arrays AND objects as a representation of ComplexType, SOAPServer will ALWAYS return object (specifically, StdClass object). To access the name, email, etc, simply access fields of such object: $name = $subscriber->name; $email = $subscriber->email; $age = $subscriber->age; To be consistent, try to operate on objects on both sides (cliant and server). E.g. on client side you would create subscriber like that: $subscriber = new StdClass(); $subscriber->name = "Dani"; $subscriber->email = "[email protected]"; $subscriber->age = 27; (StdClass is standard class for creating generic objects, provided by PHP) It is easier to make a mistake when using arrays on client side (especially when ComplexTypes are more complex :-) ) Have fun!