I just had a go at this and checked the changes in to the DUNLIN
branch. It's now the case that you only get nillable="true" in the
wsdl if you have a type that specifies a choice with null e.g.
@param string|null $a
or
@return boolean|null

I realised as I started that we had not talked about what to do with
e.g. float|string etc. which could in principle be implemented with a
choice of some sort in the wsdl. I chickened out and only allowed |
null.

The other thing I chickened out of was restructuring the way the
parameter and return information is held and passed around. I left it
as an associative array but now with a 'nillable' => true/false
element as well. I don't like it all that much but it was quick and
easy. (The path of least resistance often is quick and easy ... to
start with ... :-) )

Matthew

On May 16, 12:50 pm, "Caplan, Michael"
<[EMAIL PROTECTED]> wrote:
> Hi Graham,
>
> Yes, I think I am on the same page now :)
>
> 5++ on making SCA supported docblock notation consistent with
> phpDocumentor.
>
> Best,
>
> Mike
>
>
>
> > -----Original Message-----
> > From: phpsoa@googlegroups.com [mailto:[EMAIL PROTECTED] On
> > Behalf Of Graham Charters
> > Sent: May 16, 2007 5:10 AM
> > To: phpsoa
> > Subject: [phpsoa] Re: nillable
>
> > Hi Mike,
>
> > Thanks for clarifying the use of pipe with the phpDocumentor
> > developer.
>
> > Yes, the # notation was simply an alternative way to identify a
> > complex type in a schema.  It's largely orthogonal to nillable but I
> > mentioned it for a few reasons:
>
> > 1.  To raise the idea of us making both changes together since they
> > will be in the same area of code.
> > 2.  As an example where we could improve preserving the phpDocumentor
> > generation (at the moment the namespace gets generated into the
> > description :-( ).
> > 3.  To solicit more feedback.
>
> > My apologies if I caused some confusion.  I hope this helps clarify my
> > intentions.
>
> > Graham.
>
> > On 15 May, 18:14, "Caplan, Michael" <[EMAIL PROTECTED]>
> > wrote:
> > > Hi Matthew,
>
> > > I guess I am a little confused about the # notation that Graham
> > outlined
> > > (and wondered if that was just a slightly different way to handle
> the
> > > problem).  Am I correct that Graham is getting at a new notation for
> > > specifying elements from a schema?
>
> > > IE:
>
> > > @return elementhttp://Schema_NameSpaceDescription
>
> > > Becomes:
>
> > > @returnhttp://Schema_NameSpace#elementDescription
>
> > > As for implementing pipe support in types, I spent some time in the
> > code
> > > thinking through what this could programmatically look like.  But,
> > I'm
> > > not so sure about the structural changes I came up with and possible
> > > side effects.  Also, I wouldn't want to interfere with an
> > architecture
> > > choices that may be tied to future initiatives.  This said, I could
> > > submit a patch if it would be of assistance, but I wouldn't be able
> > to
> > > get to it for at least a week.  The sort of it, yes please implement
> > it.
> > > Let me know if I can help in any way.
>
> > > Best,
>
> > > Mike
>
> > > > -----Original Message-----
> > > > From: phpsoa@googlegroups.com [mailto:[EMAIL PROTECTED] On
> > > > Behalf Of Matthew Peters
> > > > Sent: May 15, 2007 1:47 PM
> > > > To: phpsoa
> > > > Subject: [phpsoa] Re: nillable
>
> > > > (Joining this thread a week late :-))
>
> > > > Mike, you have done a fantastic job of researching the options.
> I'm
> > > > puzzled why you say _two_ options: isn't there just one surviving
> > > > idea, which is what you and Graham have converged upon, the use of
> > the
> > > > pipe symbol for both @param and @return, as in:
> > > >       * @returnhttp://example.org/contacts#contact|null The full
> > > > contact details
>
> > > > I agree that this is a fine idea. Would you like me to go ahead
> and
> > > > implement it? The parsing of the annotations is a bit of a rough
> > area
> > > > of the code so it does not seem fair that you should have to
> > implement
> > > > it as well, especially as you have made several other
> contributions
> > in
> > > > quick succession recently. But you would however be very welcome
> to
> > do
> > > > so if you wanted :-)
>
> > > > Matthew
>
> > > > On May 14, 2:37 pm, "Caplan, Michael"
> > <[EMAIL PROTECTED]>
> > > > wrote:
> > > > > Hi Graham,
>
> > > > > FYI, I just got word back from a PHPDocumentor developer re:
> > @param
> > > > > support for multiple types:
>
> > > > > Hello Mike,
>
> > > > > That functionality is both in there and supported, though it
> > looks
> > > > like
> > > > > we could improve on how we demonstrate it in our manual.  I've
> > > opened
> > > > > PEAR bug #11032
> > > > > (http://pear.php.net/bugs/bug.php?id=11032) to get the manual
> > > updated
> > > > > with better examples showing that "param type1|type2" usage, and
> > > will
> > > > > also add more detail to the return tag's doc.
>
> > > > > Thanks for the posting...
> > > > > Chuck
>
> > > > > Now that we know that this is supported behavior, any thoughts
> on
> > > the
> > > > > two outlined methods for supporting nillable parameters?
>
> > > > > Best,
>
> > > > > Mike
>
> > > > > > -----Original Message-----
> > > > > > From: phpsoa@googlegroups.com [mailto:[EMAIL PROTECTED]
> > On
> > > > > > Behalf Of Graham Charters
> > > > > > Sent: May 12, 2007 6:16 PM
> > > > > > To: phpsoa
> > > > > > Subject: [phpsoa] Re: nillable
>
> > > > > > Hi Mike,
>
> > > > > > One of the goals of the SCA annotations has been to try to
> > > preserve
> > > > > > phpDocumentor generation, so I like your suggestion a lot.  I
> > took
> > > > a
> > > > > > look at the phpDocumentor documentation and could only see
> > mention
> > > > of
> > > > > > the pipe for multiple function returns, but not for
> parameters.
> > I
> > > > > > gave it a whirl for both and phpDocumentor 1.3.0 doesn't
> appear
> > to
> > > > do
> > > > > > anything special with the pipe and doesn't care if it's
> > included
> > > in
> > > > an
> > > > > > @param.
>
> > > > > > If we include the modification suggested in another thread
> > where
> > > we
> > > > > > would change the way complex types are specified to use the #
> > > > > > character (will improve the quality of the phpDocumentor
> > > > generation),
> > > > > > then an example SCA component might look like this:
>
> > > > > > /**
> > > > > >  * Service for managing email contacts
> > > > > >  *
> > > > > >  * @service
> > > > > >  * @binding.soap
> > > > > >  * @typeshttp://example.org/contactscontacts.xsd
> > > > > >  *
> > > > > >  */
> > > > > > class ContactService {
>
> > > > > >     /**
> > > > > >      * Retrieve contact details
> > > > > >      *
> > > > > >      * @param string|null $shortname The short name of the
> > contact
> > > > > >      * @returnhttp://example.org/contacts#contact|null The
> full
> > > > > > contact details
> > > > > >      */
> > > > > >     public function retrieve($shortname) {
> > > > > >     }
>
> > > > > > }
>
> > > > > > Let me know if I've misunderstood your proposal.
>
> > > > > > The only reason I can think for the generation of nillable all
> > the
> > > > > > time would be to support as many calling options with as
> little
> > > > > > configuration as possible.  I can understand why the other way
> > > > round
> > > > > > might be preferable and adding control through the annotations
> > > gets
> > > > my
> > > > > > +1.
>
> > > > > > Graham
>
> > > > > > On 11 May, 18:40, Michael Caplan
> > <[EMAIL PROTECTED]>
> > > > > > wrote:
> > > > > > > I've been looking into this issue further.  The condition(s)
> > to
> > > > > > > determine if a callable method parameter is nillable more
> > tricky
> > > > > than
> > > > > > > I initially thought.  I was hoping that a simple
> > > > > > > ReflectionParameter::allowsNull() call would be all that is
> > > > > > > necessary.  However, and this makes perfect sense, all calls
> > to
> > > > > > > allowsNull() will return true, with exception to parameters
> > that
> > > > use
> > > > > > > type hinting.  Since type hinting does not cover primitives,
> > > this
> > > > > > does
> > > > > > > not cut it.
>
> > > > > > > I'm thinking that this boils down primarily to a PHPdoc
> > issue.
> > > > With
> > > > > > > the @param tag in PEAR's PHPDocumentor, you can split types
> > with
> > > > a
> > > > > > > pipe to indicate multiple acceptable types.  So a "@param
> > > > > string|null
> > > > > > > $var" could be used to determine if the parameter is
> nillable
> > or
> > > > > not.
> > > > > > > ReflectionParameter::allowsNull() could also be called to
> > > > validate
> > > > > > > claims of something being nillable, should it be not using
> > type
> > > > > > hints.
>
> > > > > > > This would require a change to how SCA parses doc blocks to
> > > > support
> > > > > > > piped types.  However, probably there should be only one
> case
> > > > where
> > > > > > > multiple types can be defined (this case), as it doesn't
> make
> > > > sense
> > > > > > in
> > > > > > > other SCA circumstances.
>
> > > > > > > Setting everything to nillable (as it currently does) does
> > not
> > > > make
> > > > > > > sense as I see it.  If a system does not get put into place
> > that
> > > > > > > allows for users to control how nillable is used in the
> > > generated
> > > > > > > WSDL, as a minimum, I think it should be suppressed.  I
> think
> > it
> > > > > > makes
> > > > > > > more sense to assume all parameters as not accepting null
> > > values,
> > > > > > then
> > > > > > > the reverse.
>
> > > > > > > Thoughts?
>
> > > > > > > Mike
>
> > > > > > > On May 9, 8:02 am, Caroline Maynard <[EMAIL PROTECTED]> wrote:
>
> > > > > > > > Caplan, Michael wrote:
> > > > > > > > > Forgive my ignorance, but why does the WSDL generator
> > define
> > > > all
> > > > > > types
> > > > > > > > > as nillable?  Should that not be defined depending  on
> > the
> > > > > > prototype  of
> > > > > > > > > the method it is bound to?
>
> > > > > > > > You're right, there's a lot of information available from
> > the
> > > > > > > > ReflectionParameter methods (allowsNull(), isOptional(),
> > > > > > > > isDefaultValueAvailable(), ...) which isn't being
> exploited
> > at
> > > > the
> > > > > > > > moment, but could potentially be used to improve the
> > fidelity
> > > > of
> > > > > > the
> > > > > > > > generated WSDL. It's likely that Matthew already thought
> > about
> > > > > this
> > > > > > when
> > > > > > > > he developed that code and will know what the issues are.
> > I'd
> > > > say
> > > > > > these
> > > > > > > > enhancements sound like wish-list items for someone ...
>
> > > > > > E-mail messages may contain viruses, worms, or other malicious
> > > > code. By reading the message and opening any attachments, the
> > > recipient
> > > > accepts full responsibility for taking protective action against
> > such
> > > > code. Henry Schein is not liable for any loss or damage arising
> > from
> > > > this message.
>
> > > > > The information in this email is confidential and may be legally
> > > > privileged. It is intended solely for the addressee(s). Access to
> > this
> > > > e-mail by anyone else is unauthorized.
>
> > > > E-mail messages may contain viruses, worms, or other malicious
> > code. By reading the message and opening any attachments, the
> recipient
> > accepts full responsibility for taking protective action against such
> > code. Henry Schein is not liable for any loss or damage arising from
> > this message.
>
> > > The information in this email is confidential and may be legally
> > privileged. It is intended solely for the addressee(s). Access to this
> > e-mail by anyone else is unauthorized.
>
> > E-mail messages may contain viruses, worms, or other malicious code. By 
> > reading the message and opening any attachments, the recipient accepts full 
> > responsibility for taking protective action against such code. Henry Schein 
> > is not liable for any loss or damage arising from this message.
>
> The information in this email is confidential and may be legally privileged. 
> It is intended solely for the addressee(s). Access to this e-mail by anyone 
> else is unauthorized.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"phpsoa" group.
To post to this group, send email to phpsoa@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.co.uk/group/phpsoa?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to