Re: [PHP] Re: DocBlocking SOAP types.
On 16 February 2010 18:20, Nathan Rixham nrix...@gmail.com wrote: Richard Quadling wrote: On 16 February 2010 16:41, Nathan Rixham nrix...@gmail.com wrote: Nathan Rixham wrote: Richard Quadling wrote: Hi. I want to docblock a set of properties to be xml primitive datatypes [1]. Considering that this is the correct type for the XML/SOAP/WSDL communication, how do I bypass Zend_WSDL / Zend_AutoDiscovery so that these types go through cleanly. I know that as far as PHP is concerned, the type is loose and it will be my responsibility to encode the values accordingly. It is in the WSDL generation, and hence the docblocks, that I want these types to be valid. I think I can achieve this by the following steps. 1 - Create a new concrete class from the Zend_Soap_Wsdl_Strategy_Abstract abstract class, say Zend_Soap_Wsdl_Strategy_W3C (as the type are defined by W3C). 2 - Implement the addComplexType() method to validate the type against the list and return it if is OK. What I am stuck on is how do I cascade from the new class so that I can still drop back to the Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex. I think the Zend_Soap_Wsdl_Strategy_Composite is of use here, but I can't quite work out how to use it. Any ideas would be appreciated. Regards, Richard Quadling. [1] http://www.w3.org/TR/xmlschema11-2/#built-in-primitive-datatypes AFAIK the Zend Soap WSDL accessor already maps up php types to xsd types; a PHP String maps to an xsd:string, integer to xsd:int and so forth. XML schema 1.1 datatypes are pretty much the same as; and backwards compatible with the current xml schema datatypes (which are still the recommended standard, as 1.1 isn't a recommendation yet, work in progress) and use the same namespace. Thus the existing implementation should be xml w3c complaint both now and in the future. All that's said purely based on the zend docs [1] and not through practically using Zend_Soap_Wsdl_* though! sigh.. [1] = http://framework.zend.com/manual/en/zend.soap.wsdl.html (specifically Type mapping) - might make more sense now! I think you've missed the point. totally! I want to tell the outside world, via the WSDL, that property X is an xsd:datetime (hmm ok, for that to make sense forget PHP's DateTime builtin class) How do I do that using AutoDiscovery? PHP doesn't have all the types that I can ask for. If I use PHP's types, they are all strings. So any junk can be put in. The consumer of the service isn't PHP, but (I believe) C#. So strongly typed. It isn't about mapping PHP types to W3C types. and now i completely follow after downloading the Zend code - which strategy are you currently using / need to use? either way I guess the two simplest approaches would either be: 1: create a class which extends Zend_Soap_Wsdl_Strategy_YOURCURRENTSTRATEGYCHOICE , and implement the addComplexType() method adding in all the xsd extra types and then calling parent::addComplexType when not found. 2: create a class which extends Zend_Soap_Wsdl and overrides the getType() method adding in all the xsd extra types and then calling parent::getType when not found. regards! -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php I've extended the ArrayOfComplexType strategy as this is the most common one for me. Overwrote the addComplexType to parse the type (xsd: where is in the known list). Generates the WSDL just fine. Now need to see what the client can do with that. (Tomorrow). -- - Richard Quadling Standing on the shoulders of some very clever giants! EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: DocBlocking SOAP types.
Richard Quadling wrote: Hi. I want to docblock a set of properties to be xml primitive datatypes [1]. Considering that this is the correct type for the XML/SOAP/WSDL communication, how do I bypass Zend_WSDL / Zend_AutoDiscovery so that these types go through cleanly. I know that as far as PHP is concerned, the type is loose and it will be my responsibility to encode the values accordingly. It is in the WSDL generation, and hence the docblocks, that I want these types to be valid. I think I can achieve this by the following steps. 1 - Create a new concrete class from the Zend_Soap_Wsdl_Strategy_Abstract abstract class, say Zend_Soap_Wsdl_Strategy_W3C (as the type are defined by W3C). 2 - Implement the addComplexType() method to validate the type against the list and return it if is OK. What I am stuck on is how do I cascade from the new class so that I can still drop back to the Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex. I think the Zend_Soap_Wsdl_Strategy_Composite is of use here, but I can't quite work out how to use it. Any ideas would be appreciated. Regards, Richard Quadling. [1] http://www.w3.org/TR/xmlschema11-2/#built-in-primitive-datatypes AFAIK the Zend Soap WSDL accessor already maps up php types to xsd types; a PHP String maps to an xsd:string, integer to xsd:int and so forth. XML schema 1.1 datatypes are pretty much the same as; and backwards compatible with the current xml schema datatypes (which are still the recommended standard, as 1.1 isn't a recommendation yet, work in progress) and use the same namespace. Thus the existing implementation should be xml w3c complaint both now and in the future. All that's said purely based on the zend docs [1] and not through practically using Zend_Soap_Wsdl_* though! [1] http://schemas.xmlsoap.org/soap/encoding/ Regards :) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: DocBlocking SOAP types.
Nathan Rixham wrote: Richard Quadling wrote: Hi. I want to docblock a set of properties to be xml primitive datatypes [1]. Considering that this is the correct type for the XML/SOAP/WSDL communication, how do I bypass Zend_WSDL / Zend_AutoDiscovery so that these types go through cleanly. I know that as far as PHP is concerned, the type is loose and it will be my responsibility to encode the values accordingly. It is in the WSDL generation, and hence the docblocks, that I want these types to be valid. I think I can achieve this by the following steps. 1 - Create a new concrete class from the Zend_Soap_Wsdl_Strategy_Abstract abstract class, say Zend_Soap_Wsdl_Strategy_W3C (as the type are defined by W3C). 2 - Implement the addComplexType() method to validate the type against the list and return it if is OK. What I am stuck on is how do I cascade from the new class so that I can still drop back to the Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex. I think the Zend_Soap_Wsdl_Strategy_Composite is of use here, but I can't quite work out how to use it. Any ideas would be appreciated. Regards, Richard Quadling. [1] http://www.w3.org/TR/xmlschema11-2/#built-in-primitive-datatypes AFAIK the Zend Soap WSDL accessor already maps up php types to xsd types; a PHP String maps to an xsd:string, integer to xsd:int and so forth. XML schema 1.1 datatypes are pretty much the same as; and backwards compatible with the current xml schema datatypes (which are still the recommended standard, as 1.1 isn't a recommendation yet, work in progress) and use the same namespace. Thus the existing implementation should be xml w3c complaint both now and in the future. All that's said purely based on the zend docs [1] and not through practically using Zend_Soap_Wsdl_* though! sigh.. [1] = http://framework.zend.com/manual/en/zend.soap.wsdl.html (specifically Type mapping) - might make more sense now! -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: DocBlocking SOAP types.
On 16 February 2010 16:41, Nathan Rixham nrix...@gmail.com wrote: Nathan Rixham wrote: Richard Quadling wrote: Hi. I want to docblock a set of properties to be xml primitive datatypes [1]. Considering that this is the correct type for the XML/SOAP/WSDL communication, how do I bypass Zend_WSDL / Zend_AutoDiscovery so that these types go through cleanly. I know that as far as PHP is concerned, the type is loose and it will be my responsibility to encode the values accordingly. It is in the WSDL generation, and hence the docblocks, that I want these types to be valid. I think I can achieve this by the following steps. 1 - Create a new concrete class from the Zend_Soap_Wsdl_Strategy_Abstract abstract class, say Zend_Soap_Wsdl_Strategy_W3C (as the type are defined by W3C). 2 - Implement the addComplexType() method to validate the type against the list and return it if is OK. What I am stuck on is how do I cascade from the new class so that I can still drop back to the Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex. I think the Zend_Soap_Wsdl_Strategy_Composite is of use here, but I can't quite work out how to use it. Any ideas would be appreciated. Regards, Richard Quadling. [1] http://www.w3.org/TR/xmlschema11-2/#built-in-primitive-datatypes AFAIK the Zend Soap WSDL accessor already maps up php types to xsd types; a PHP String maps to an xsd:string, integer to xsd:int and so forth. XML schema 1.1 datatypes are pretty much the same as; and backwards compatible with the current xml schema datatypes (which are still the recommended standard, as 1.1 isn't a recommendation yet, work in progress) and use the same namespace. Thus the existing implementation should be xml w3c complaint both now and in the future. All that's said purely based on the zend docs [1] and not through practically using Zend_Soap_Wsdl_* though! sigh.. [1] = http://framework.zend.com/manual/en/zend.soap.wsdl.html (specifically Type mapping) - might make more sense now! I think you've missed the point. I want to tell the outside world, via the WSDL, that property X is an xsd:datetime (hmm ok, for that to make sense forget PHP's DateTime builtin class) How do I do that using AutoDiscovery? PHP doesn't have all the types that I can ask for. If I use PHP's types, they are all strings. So any junk can be put in. The consumer of the service isn't PHP, but (I believe) C#. So strongly typed. It isn't about mapping PHP types to W3C types. -- - Richard Quadling Standing on the shoulders of some very clever giants! EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: DocBlocking SOAP types.
Richard Quadling wrote: On 16 February 2010 16:41, Nathan Rixham nrix...@gmail.com wrote: Nathan Rixham wrote: Richard Quadling wrote: Hi. I want to docblock a set of properties to be xml primitive datatypes [1]. Considering that this is the correct type for the XML/SOAP/WSDL communication, how do I bypass Zend_WSDL / Zend_AutoDiscovery so that these types go through cleanly. I know that as far as PHP is concerned, the type is loose and it will be my responsibility to encode the values accordingly. It is in the WSDL generation, and hence the docblocks, that I want these types to be valid. I think I can achieve this by the following steps. 1 - Create a new concrete class from the Zend_Soap_Wsdl_Strategy_Abstract abstract class, say Zend_Soap_Wsdl_Strategy_W3C (as the type are defined by W3C). 2 - Implement the addComplexType() method to validate the type against the list and return it if is OK. What I am stuck on is how do I cascade from the new class so that I can still drop back to the Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex. I think the Zend_Soap_Wsdl_Strategy_Composite is of use here, but I can't quite work out how to use it. Any ideas would be appreciated. Regards, Richard Quadling. [1] http://www.w3.org/TR/xmlschema11-2/#built-in-primitive-datatypes AFAIK the Zend Soap WSDL accessor already maps up php types to xsd types; a PHP String maps to an xsd:string, integer to xsd:int and so forth. XML schema 1.1 datatypes are pretty much the same as; and backwards compatible with the current xml schema datatypes (which are still the recommended standard, as 1.1 isn't a recommendation yet, work in progress) and use the same namespace. Thus the existing implementation should be xml w3c complaint both now and in the future. All that's said purely based on the zend docs [1] and not through practically using Zend_Soap_Wsdl_* though! sigh.. [1] = http://framework.zend.com/manual/en/zend.soap.wsdl.html (specifically Type mapping) - might make more sense now! I think you've missed the point. totally! I want to tell the outside world, via the WSDL, that property X is an xsd:datetime (hmm ok, for that to make sense forget PHP's DateTime builtin class) How do I do that using AutoDiscovery? PHP doesn't have all the types that I can ask for. If I use PHP's types, they are all strings. So any junk can be put in. The consumer of the service isn't PHP, but (I believe) C#. So strongly typed. It isn't about mapping PHP types to W3C types. and now i completely follow after downloading the Zend code - which strategy are you currently using / need to use? either way I guess the two simplest approaches would either be: 1: create a class which extends Zend_Soap_Wsdl_Strategy_YOURCURRENTSTRATEGYCHOICE , and implement the addComplexType() method adding in all the xsd extra types and then calling parent::addComplexType when not found. 2: create a class which extends Zend_Soap_Wsdl and overrides the getType() method adding in all the xsd extra types and then calling parent::getType when not found. regards! -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php