README ====== Le webservice est basé sur le ZendFramework pour générer les WSDLs. Le fichier Zend/Soap/Wsdl/Strategy/DefaultComplexType.php a été modifié pour générer la documentation automatiquement. /** * Traitement éléments de documentation à placer dans le WSDL * Supprime les retours chariots. * Récupére les éléments de documentation */ $comment = ''; $docBlock = preg_replace('/\n/', '', $property->getDocComment() ); if (preg_match('/\/\*\*(.+) \* @var\s+[^\s]+/m', $docBlock, $docBlockMatches)) { //Suppression tabulation et autres $comment = preg_replace( array('/\r/', '/\t\s\*/', '/@ref\s+[^\s]+/'), array('', '', ''), $docBlockMatches[1] ); } /** * Traitement des références * @ref fichier:titre:nom_du_fichier * => http://vhost/ref/fichier/ * @ref mysql:titre:db.table(col1,col2,....) * => http://vhost/ref/table/ */ if (preg_match_all('/@ref\s+(fichier|mysql):([^\s]+):([^\s]+)/m', $property->getDocComment(), $refMatches, PREG_SET_ORDER)){ $host = 'http://scoresws.sd.dev'; $urlFichier = '/ref/fichier/'; $urlMysql = '/ref/table/'; foreach ($refMatches as $ref){ switch ($ref[0]){ case 'fichier': $comment.= $ref[1].'('.$host.$urlFichier.'?q='.$ref[2].')'; break; case 'mysql': $comment.= $ref[1].'('.$host.$urlMysql.'?q='.base64_encode($ref[2]).')'; break; } $comment.= ', '; } } /** * Ajout des éléments de documentation au WSDL */ if (!empty($comment)){ $annotation = $dom->createElement('xsd:annotation'); $documentation = $dom->createElement('xsd:documentation', trim($comment)); $annotation->appendChild($documentation); $element->appendChild($annotation); } Fonctionnement ============== Obtenir le WSDL - En mode développement : http://hostname/service?wsdl-auto - Générer le wsdl : http://hostname/service?wsdl-generate - Utiliser le WSDL généré : http://hostname/service?wsdl Pour définir le mode (vhost d'apache) SetEnv APPLICATION_ENV "development" SetEnv APPLICATION_ENV "production" SetEnv APPLICATION_ENV "staging" En appelant l'url http://hostname/service, le contoller de l'application, "service" est automatiquement utiliser. Tout ce qui est visible dans la class est utilisé par le controller et se retrouve visible dans le service (wsdl, requête) Si des fonctions ne doivent pas être rendu visible il faut donc les séparer dans un autre controller utilisant une autre class. Configuration VHOST =================== Exemple de vhost en mode développement <VirtualHost *:80> ServerName scoresws.sd.dev AddDefaultCharset utf-8 DocumentRoot "D:/www/scoresws/public" SetEnv APPLICATION_ENV "development" <Directory "D:/www/scoresws/public/"> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> # Possible values include: debug, info, notice, warn, error, crit, alert, emerg. LogLevel debug ErrorLog "logs/scoresws.sd.dev-error.log" CustomLog "logs/scoresws.sd.dev-access.log" common </VirtualHost>
Description
Languages
PHP
94.8%
CSS
4.3%
HTML
0.5%
CSV
0.3%