One of the major missing components in PHP 5's SOAP implementation is the ability to generate WSDL. This isn't an oversight - generating WSDL straight from PHP is basically impossible. PHPs lack of function parameter prototyping means that you do not have the necessary information to specify all of your input and output messages. PHPDoc comments, though, enable you to specify paramater and return value prototypes as well as specify types for class members. And, as it turns out, that's plenty.
WSDL_Gen is a PHP5 class that allows you to create WSDL from a PHP class (the one you intend to bind with SoapServer::setClass()).
Because of an annoying limitation in Dom, you'll also need to apply this tiny patch to ext/dom to your PHP CVS tree to make it work.
This class is still quite Alpha, but it supports generating all the WSDL in my Webservices talk excpet for those requiring headers. It also only supports HTTP transport, rpc/encoded style and a single endpoint; but those are more due to sloth than to design deficiency.
Apparently there are a couple projects that aim at similar goals.
Here is one, Pierre hints that he has one in the works, and Lukas insists that there is something in PEAR that does some WSDL creation as well. My goal is to require next to no PHPDoc and absolutely no custom maps. Perhaps there will be some good convergence in these tools, as they're really useful. Writing WSDL is a pain.