webservice/application/views/helpers/DocParameter.php

86 lines
1.9 KiB
PHP
Raw Normal View History

<?php
class Zend_View_Helper_DocParameter extends Zend_View_Helper_Abstract
{
protected $serviceTypes;
protected $types = array(
'string', 'str',
'boolean', 'bool',
2012-05-13 07:27:35 +00:00
'int', 'integer',
'float', 'double',
'array', 'object', 'mixed'
);
protected $_transcodeType = array(
'str' => 'string',
'bool' => 'boolean',
2012-05-13 07:27:35 +00:00
'integer' => 'int',
);
public function docParameter($params, $serviceTypes)
{
$this->serviceTypes = $serviceTypes;
$output = '';
if (count($params)>0) {
$output.= '<ul>';
foreach ($params as $param) {
$output.= $this->formatParam($param);
}
$output.= '</ul>';
}
return $output;
}
private function parseType($type)
{
$output = '';
2010-09-20 08:04:31 +00:00
$type = str_replace('[]', '', $type);
if (array_key_exists($type, $this->serviceTypes)) {
$types = $this->serviceTypes[$type];
$output.= '<ul>';
foreach ($types as $param) {
$output.= $this->formatParam($param);
}
$output.= '</ul>';
2011-01-26 13:07:00 +00:00
} elseif (in_array($type, array(
'string', 'str',
'boolean', 'bool',
'integer', 'int',
'float', 'double',
'array', 'object', 'mixed'))) {
$output.= '';
} elseif ($type == 'void'){
$output.= 'Void';
2010-09-20 08:04:31 +00:00
} else {
2010-10-20 12:29:41 +00:00
$output.= ' => <b>Type '.$type.' Inconnu</b>';
}
return $output;
}
private function formatParam($param)
{
$output = '';
$output.= '<li>';
$output.= '<i>' . $this->transcodeType($param['type']) . '</i>';
2010-09-20 15:08:45 +00:00
$output.= ' ';
2012-05-13 07:27:35 +00:00
$output.= '<b>' . $param['name'] . '</b>';
if (isset($param['description']) && !empty($param['description'])) {
2012-05-13 07:27:35 +00:00
$output.= ' - '.$param['description'];
}
if (!in_array($param['type'], $this->types)) {
$output.= $this->parseType($param['type']);
}
$output.= '</li>';
return $output;
}
private function transcodeType($type)
{
if(array_key_exists($type, $this->_transcodeType)){
return $this->_transcodeType[$type];
} else {
return $type;
}
}
}