Пример #1
0
 /**
  * Get parameter description
  *
  * @param ParameterReflection $param
  * @return string|null
  */
 public function getParamDescription(ParameterReflection $param)
 {
     $docBlock = $param->getDeclaringFunction()->getDocBlock();
     $docBlockLines = explode("\n", $docBlock->getContents());
     $pattern = "/\\@param\\s+([\\w\\\\_\\[\\]\\|]+)\\s+(\\\${$param->getName()})\\s(.*)/";
     $matches = [];
     foreach ($docBlockLines as $line) {
         if (preg_match($pattern, $line, $matches)) {
             return $matches[3];
         }
     }
 }
Пример #2
0
 /**
  * Check if parameter is an array.
  *
  * @param ParameterReflection $param
  * @return bool
  */
 protected function _isArrayParam($param)
 {
     $isArray = $param->isArray();
     $docBlock = $param->getDeclaringFunction()->getDocBlock();
     /** If array type is not set explicitly in the method interface, examine annotations */
     if (!$isArray && $docBlock) {
         /** This pattern will help to skip parameters declarations which precede to the current one */
         $precedingParamsPattern = str_repeat('.*\\@param.*', $param->getPosition());
         $paramType = str_replace('\\', '\\\\', $param->getType());
         if (preg_match("/.*{$precedingParamsPattern}\\@param\\s+({$paramType}\\[\\]).*/is", $docBlock->getContents())) {
             $isArray = true;
         }
     }
     return $isArray;
 }
Пример #3
0
 /**
  * Get the parameter type
  *
  * @param ParameterReflection $param
  * @return string
  */
 public function getParamType(ParameterReflection $param)
 {
     $type = $param->getType();
     if ($type == 'array') {
         // try to determine class, if it's array of objects
         $docBlock = $param->getDeclaringFunction()->getDocBlock();
         $pattern = "/\\@param\\s+([\\w\\\\_]+\\[\\])\\s+\\\${$param->getName()}\n/";
         if (preg_match($pattern, $docBlock->getContents(), $matches)) {
             return $matches[1];
         }
         return "{$type}[]";
     }
     return $type;
 }