webservice/docs/MODIFICATION_ZEND.txt

86 lines
2.5 KiB
Plaintext

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)) {
$comment.= preg_replace(
array('/\r/', '/\t\s\*/', '/@ref\s+[^\s]+/'),
array('', '', ''), $docBlockMatches[1]
);
}
if (preg_match('/@var\s+[^\s]+\s+(.+)/m', $docBlock, $docBlockMatches)) {
$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 = $_SERVER['SERVER_NAME'];
$urlFichier = '/ref/fichier/';
$urlMysql = '/ref/table/';
$comment.= 'Référence(s) : ';
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);
}
===============================================================================>
Le fichier Zend/Soap/AutoDiscover.php a été modifié
function _addFunctionToWsdl
$sequenceElement = array(
'name' => $param->getName(),
'type' => $wsdl->getType($param->getType()),
'desc' => $param->getDescription()
);
===============================================================================>
Le fichier Zend/Soap/Wsdl.php a été modifié
function _parseElement
} elseif ($key == 'desc') {
if (!empty($value)) {
$annotation = $this->_dom->createElement('xsd:annotation');
$documentation = $this->_dom->createElement('xsd:documentation', trim($value));
$annotation->appendChild($documentation);
$elementXml->appendChild($annotation);
}
} else {