Note: See the diff in the respository for other changes that are not documented here. Only smaller changes that not seem to be very important will stay undocumented. 2011-08-20: 2.3 Changed: The license.txt is now included in all downloadable packages New: Run JSON, http, REST or XML RPC webservices with the PhpWsdlServers extension New: A simple request forwarder method in PhpWsdlAjax to proxy foreign webservices for an AJAX client (may serve any foreign SOAP webservice) New: The headline of the HTML output can be changed now by setting another headline string in the PhpWsdl->HtmlHeadLine property New: Downloadable JavaScript JSON client proxy class with the PhpWsdlServers extension that uses AJAX synchron or asynchron. The JavaScript code can be downloaded as raw or compressed code 2011-08-15: 2.2.2 Bugfix: PhpWsdlComplex interpreted all types as array 2011-08-14: 2.2.1 Bugfix: PhpWsdl->IsFileInList did not declare the variable $fLen 2011-08-13: 2.2 Bugfix: Parsing the documentation couldn't be fully disabled Bugfix: The CacheTime property is static and should be handled as such in the demonstrations Changed: The AJAX proxy is now released Changed: The PhpWsdlParser will now handle class methods without an explicit public declaration Changed: The return part is named "return". This change needs your clients to update their SOAP proxies f.e. This change was required to be compatible to the PHPs SoapServer response when not using WSDL. But you can change it back to the old behavior by setting another name in the PhpWsdlParam::$DefaultReturnName Changed: WSDL element classes are now responsibly for creating the HTML documentation output Changed: A file named "class.webservice.php" may be in the current folder OR in the same folder as the file "class.phpwsdl.php" exists Changed: An array can be defined without a name restriction just by adding [] to the type name. The "Array" type name postfix can be disabled by setting the PhpWsdlComplex::$DisableArrayPostfix to TRUE Changed: All PhpWsdl elements should extend the PhpWsdlObject class Changed: Caching of HTML (and PHP) output Changed: This version contains some caching improvements Changed: Cache files from other versions can't be used anymore New: PhpWsdl can handle htp Auth logins before running a SOAP server New: The xmlns namespaces for the target namespace and XSD can now be changed in the PhpWsdl::$Config configuration New: Added methods to format and optimize XML, also added a new class PhpWsdlFormatter New: The quick mode should be cone with the PhpWsdl::RunQuickMode method, the quick mode by giving TRUE to the constructor is deprecated and will be removed from version 3.0 New: Extended PhpWsdl->TidyCache method allows to cleanup the cache folder: Only timed out cache files can be deleted. New: Added support for writing a debug file New: Debugging messages may now contain a backtrace info from where the message has been sent New: Added xsd:anyType to the list of basic types New: Namespaces in WSDL can be modified by changing the values of the PhpWsdl::$NameSpaces property New: @ignore has the same meaning as @pw_omitfnc and can disable a complex type definition when inserted before the @pw_complex keyword in the same comment block New: Added the @service keyword to support a description for a webservice. The name of the webservice could be set with this keyword, too - usage: "@service ServiceName" New: If you're only using global methods, you don't need to setup a webservice name (PhpWsdl will use "SoapWebService" in this case) New: Added support for global methods with "@pw_set global=1" in the comment block, or (to handle all methods as global per default) by setting the PhpWsdlMethod::$IsGlobalDefault to TRUE (see demo5.php) New: The PhpWsdlProxy can now be served with OR without WSDL (check the new PhpWsdl::$UseProxyWsdl property) New: Added a global method to demo3.php to demonstrate how to mix class and global methods within one webservice New: Added a list of non-nillable types as PhpWsdl::$NonNillable to determine the nillable flag for an complex type element based on its type New: PhpWsdl will use the folder "./cache", if it's writeable and you didn't define another cache folder. The second choice would be the systems temporary folder. If no folder is writeable, caching will be disabled New: Autorun in quick mode possible, if you change the source of class.phpwsdl.php and set the PhpWsdl::$AutoRun property to TRUE, or you set the global variable $PhpWsdlAutoRun to TRUE (see demo4/5.php for an example) New: The NuSOAP adapter is able to create a new PhpWsdl object with data from an existing NuSOAP server object New: PhpWsdl is able to create a documented PHP SOAP client class for a webservice New: Added a SOAP client class that can produce a PHP SOAP client from an WSDL URI with help of PhpWsdl (see demo6.php) Info: If you used the hooks for creating the HTML documentation, you need to update your code to be compatible with the changes in this version! 2011-08-01: 2.1 Bugfix: @pw_omit should be @pw_omitfnc in class.phpwsdlhash.php Bugfix: Hook calls in PhpWsdl->RunServer didn't use a hash array as parameter Bugfix: Some predefined hooks didn't use 'Hook' as postfix of their name Bugfix: Extension loading failed because the generated filename didn't match Bugfix: PhpWsdl::Init method was called too late Changed: Some code from the PhpWsdl::Init method that is related to other classes is now replaced to the top of the mathing class definition Changed: Most internal hook handlers will now return TRUE to give your own handlers a chance to run New: Started to add debugging informations New: $class in PhpWsdl->RunServer may be an instance of an object that will become provided to the PHP SoapServer by the setObject method. New: The static PhpWsdl::CreateInstance method is the new way to create an instance of PhpWsdl to be compatible to extensions. New: The PHP SoapServer object is now accessable with the SoapServer property New: The NuSOAP adapter lets you use NuSOAP as SOAP server New: The Zend adapter lets you use Zend as SOAP server New: Proxy webservice for forwarding AJAX SOAP requests to another SOAP webservice Info: If you used the PrepareServerHook or RunServerHook, you should notice the bugfix: Your handler method will now receive an hash array! Please update your code to be compatible. Info: If you used any hook without the 'Hook' postfix, you should notice the bugfix: Their names have now the 'Hook' postfix! 2011-07-31: 2.0 Info: In earlier versions multiple complex types could be defined within one comment block. Now every complex type has to be defined in its own comment block. If multiple complex types are defined in a single comment block, only the first one will be visible! This is the only change in this version that affects the main usage of PhpWsdl. 2011-07-30: 1.1 Changed: Unoptimized WSDL won't be cached anymore Changed: PhpWsdl->CreateWsdl is now PhpWsdl->ParseFiles where is makes more sense Changed: The PhpWsdl->OutputHtmlHook can now return a true value to omit the internal HTML Changed: The PHP SoapServer is now started with SOAP_1_1 AND SOAP_1_2 per default Changed: The default namespace is now generated with the server environment information Changed: PhpWsdl trys to detect the name of the class that handles the SOAP requests Changed: PhpWsdl will use the "SCRIPT_FILENAME" if CreateWsdl is called without setting up the PhpWsdl->Files property Changed: Giving only TRUE to the PhpWsdl constructor will run the SOAP server by determining all configuration New: @pw_clear keyword to initialize the parser temporaries New: Added demo4.php to demonstrate how to use PhpWsdl in quick mode New: PhpWsdl has a quick mode now New: Added test URIs on my server so you can test PhpWsdl without installing it on your own server New: Added support for the HTML2PDF http API (see www.htmltopdf.de for more information) to enable licensed users to generate a PDF from the documentation with the WSDL files attached (in the PDF document itself) New: Complex types and public methods are now being sorted by their names in the HTML output New: Now there is an index in the HTML description to jump to a definition New: The PhpWsdl->Force(Not)OutputWsdl/Html flags can enable and disable sending WSDL and/or HTML New: The options that are given to the PHP SoapServer constructor can be modified with the new PhpWsdl->SoapServerOptions array New: The HTML output can be downloaded as PDF when clicking the "Download this page as PDF" at the bottom of the document. This will only work in an internet environment without authentification! (See www.htmltopdf.de for more information) New: Documentation can be parsed and included in WSDL and the HTML output New: Setting "docs" holds the documentation for elements and will be filled by the file parser New: PhpWsdl->ParseDocs flag to enable parsing for documentation (enabled per default) New: PhpWsdl->IncludeDocs flag to enable including the documentation in WSDL, if the optimizer is disabled (enabled per default) New: Version history in readme.txt Info: Except for the change of the PhpWsdl->OutputHtmlHook behavior this version is fully compatible to version 1.0. The bugfixes are released in version 1.0.1, the download has been updated Info: There are plans for great improvements for this quick shot. The whole parsing engine could maybe been done with not more than only 3 regular expressions at all, f.e. The parser and the WSDL builder should support plugins to extend PhpWsdl very easy and compatible to future changes. All this will be a version 2.0. Until that version is released, version 1.* will of course be continued. 2001-07-29: 1.0.1 Bugfix: When determining the endpoint URI the http(s) selection didn't work for an SSL URI Bugfix: "is_boolean" should be "is_bool". Because of this bug the server was not able to run at construction time Bugfix: Found a typo in the HTML description: "occours" should be "occurs" Info: This version is fully compatible to version 1.0. 2011-07-28: 1.0 The very first release version!