109 lines
3.0 KiB
Plaintext
109 lines
3.0 KiB
Plaintext
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>
|
|
|
|
|
|
|
|
|
|
|
|
|