Re: Recursion issue with Zend_Soap_AutoDiscovery.

[email protected] (Nathan Rixham)
Newsgroups php.general,php.soap,php.soap
Message-ID <[email protected]>
Richard Quadling wrote:
> Hi.
> 
> I'm in the process of building a web service which incorporates the
> ability for the server to inform the client that a particular call has
> been superseded by another.
> 
> So, cut down (I've removed all the other details), ...
> 
> class ServiceDetails
> 	{
> 	/**
> 	 * Superseded by
> 	 *
> 	 * Details of the replacement service that is now available.
> 	 *
> 	 * @var ServiceDetails
> 	 */
> 	public $SupersededBy = Null;
> 	}
> 
> When I try to use Zend_Soap_AutoDiscover() against this class, I get ...
> 
> "Infinite recursion, cannot nest 'ServiceDetails' into itsself." (sic)
> 
> There has to be recursion, as there could be many levels of
> supersedence, each one providing the details of their own replacement.
> 
> The call to return the service details read the requested
> services/class constants. If there is a superseded entry, it creates a
> new request for service details on the new class (the recursion).
> 
> If the value is Null, then there is no recursion.
> 
> 
> 
> I'm using ...
> 
> new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');
> 
> as the strategy as the service has arrays of complex types in the output.
> 
> 
> 
> If I use @var string and then manually replace the type in the WSDL
> file from ...
> 
>           <xsd:element name="SupersededBy" type="xsd:string" />
> 
> to
> 
>           <xsd:element name="SupersededBy" type="tns:ServiceDetails" />
> 
> and use wsdl2php against this, it all _SEEMS_ to work OK.
> 
> So. Is this my best option? Or is there a way to do this that I'm missing?
> 
> 
> Any ideas really.
> 

http://wso2.org/projects/wsf/php ;)

helpful eh
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.