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 * @types http://example.org/contacts contacts.xsd * */ class ContactService { /** * Retrieve contact details * * @param string|null $shortname The short name of the contact * @return http://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 ... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---