[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-soap
Subject:    Re: [SOAP] Re: Complex Types problem
From:       Dani Castaños <danitao.mailists () gmail ! com>
Date:       2007-06-26 10:22:35
Message-ID: 4680E8EB.5070007 () gmail ! com
[Download RAW message or body]

Ammarmar escribió:
> Dnia 25-06-2007 o 09:44:54 "Dani Castaños" 
> <danitao.mailists@gmail.com> napisał(a):
>
>> PHP CLIENT
>> ==========
>> $subscriber = array( 'age'   => (Integer) 27
>>                    , 'email' => (String) 'foo@fake.es'
>>                    , '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 = "foo@fake.es";
> $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!
>
Thank you very much!
Yesterday I wast at home thinking about it, and I figure out the same 
solution. I was just reading carefully the error returned, and I get the 
'$subscriber->name' format instead of '$subscriber['name']'

-- 
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic