This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Incam_SGD/webservice/classes/soap/IPReflectionMethod.class.php

100 lines
2.5 KiB
PHP

<?php
/**
* An extended reflection/documentation class for class methods
*
* This class extends the reflectioMethod class by also parsing the
* comment for javadoc compatible @tags and by providing help
* functions to generate a WSDL file. The class might also
* be used to generate a phpdoc on the fly
*
*@author KnowledgeTree Team
*@package Webservice
*@version Version 0.9
*@extends reflectionMethod
*/
class IPReflectionMethod extends reflectionMethod{
/** @var string class name */
public $classname;
/** @var string The return type for this method */
public $return = "";
/** @var IPReflectionParameter[] Associative array with reflectionParameter objects */
public $parameters = array();
/** @var string */
public $fullDescription = "";
/** @var string */
public $smallDescription = "";
/** @var string */
public $throws="";
/**
* Constructor which calls the parent constructor and makes sure the comment
* of the method is parsed
*
* @param string The class name
* @param string The method name
*/
public function __construct($class,$method){
$this->classname = $class;
parent::__construct($class,$method);
$this->parseComment();
}
/**
* Returns the full function name, including arguments
* @return string
*/
public function getFullName(){
$args = $this->getParameters();
$argstr = "";
foreach((array)$args as $arg){
if($argstr!="")$argstr.=", ";
$argstr.= $arg->type ." $".$arg->name;
}
return $this->return." ".$this->name."(".$argstr.")";
}
/**
* Returns an array with parameter objects, containing type info etc.
*
* @return ReflectionParameter[] Associative array with parameter objects
*/
public function getParameters(){
$this->parameters = Array();
$ar = parent::getParameters();
$i = 0;
foreach((array)$ar as $parameter){
$parameter->type = $this->params[$i++]->type;
$this->parameters[$parameter->name] = $parameter;
}
return $this->parameters;
}
/**
*
* @param $annotationName String the annotation name
* @param $annotationClass String the annotation class
* @return void
*/
public function getAnnotation($annotationName, $annotationClass = null){
return IPPhpDoc::getAnnotation($this->comment, $annotationName, $annotationClass);
}
/**
* Parses the comment and adds found properties to this class
* @return void
*/
private function parseComment(){
$this->comment = $this->getDocComment();
new IPReflectionCommentParser($this->comment, $this);
}
}
?>