DocBlocking SOAP types.
am 16.02.2010 16:59:28 von Richard Quadling
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-datat ypes
--
-----
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=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling
Re: DocBlocking SOAP types.
am 16.02.2010 17:39:35 von Nathan Rixham
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-datat ypes
>
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
Re: DocBlocking SOAP types.
am 16.02.2010 17:41:46 von Nathan Rixham
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-datat ypes
>>
>
> 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
Re: DocBlocking SOAP types.
am 16.02.2010 17:52:58 von Richard Quadling
On 16 February 2010 16:41, Nathan Rixham 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-datat ypes
>>>
>>
>> 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=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling
Re: DocBlocking SOAP types.
am 16.02.2010 19:20:27 von Nathan Rixham
Richard Quadling wrote:
> On 16 February 2010 16:41, Nathan Rixham 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-datat ypes
>>>>
>>> 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
Re: [PHP] Re: DocBlocking SOAP types.
am 17.02.2010 11:11:16 von Richard Quadling
On 16 February 2010 18:20, Nathan Rixham wrote:
> Richard Quadling wrote:
>> On 16 February 2010 16:41, Nathan Rixham 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 henc=
e
>>>>> 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 agains=
t
>>>>> 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-datat ypes
>>>>>
>>>> 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 f=
orth.
>>>>
>>>> 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] =3D 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 t=
yped.
>>
>>
>> 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:xxxx where xxxx is
in the known list).
Generates the WSDL just fine.
Now need to see what the client can do with that.
(Tomorrow).
--=20
-----
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=3DZEND002498&r=3D213474=
731
ZOPA : http://uk.zopa.com/member/RQuadling