Description

When using Zend_Soap_Wsdl Autodiscover it uses Reflection to inspect the parameter types. These user given types via doc-block are case-sensitive. So having a type "@param inT", "@param Int", or "@param Integer" is causing the function Zend_Soap_Wsdl::getType() to not match the specific SOAP type and try to "class_exists" on the type, which leads to a Warning in conjunction with Zend_Loader:

Warning: Zend_Loader::include_once(Integer.php) [function.Zend-Loader-include-once]: failed to open stream: No such file or directory in /var/www/development/zend/ZendFramework-1.6.0-minimal/library/Zend/Loader.php on line 83

This breaks the WSDL XML File. You could argue set error reporting off, but in development you want to see if anything else might cause an XML break due to thrown warning or whatever.

To solve this issue the soap base type specific type checking should be case-insensitive and the custom object type checking should be moved outside the switch-default statement into a case-sensitive check.

Comments

Posted by Benjamin Eberlei (beberlei) on 2008-09-23T11:47:43.000+0000

I have attached a patch to revision 9996 of the Wsdl.php, which changes the getType() function of the class to allow for case-insensitive parameter checking.

Posted by Benjamin Eberlei (beberlei) on 2008-09-23T14:41:07.000+0000

i just realized i overshoot the patch. its really just the strtolower($type) that is needed. all the other stuff is still working correctly.