/usr/share/php/ApiGen/ReflectionFunctionBase.php is in php-apigen 2.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | <?php
/**
* ApiGen 2.8.0 - API documentation generator for PHP 5.3+
*
* Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
* Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
* Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
*
* For the full copyright and license information, please view
* the file LICENSE.md that was distributed with this source code.
*/
namespace ApiGen;
use TokenReflection;
use InvalidArgumentException;
/**
* Function/method reflection envelope parent class.
*
* Alters TokenReflection\IReflectionFunctionBase functionality for ApiGen.
*/
abstract class ReflectionFunctionBase extends ReflectionElement
{
/**
* Cache for list of parameters.
*
* @var array
*/
protected $parameters;
/**
* Returns the unqualified name (UQN).
*
* @return string
*/
public function getShortName()
{
return $this->reflection->getShortName();
}
/**
* Returns if the function/method returns its value as reference.
*
* @return boolean
*/
public function returnsReference()
{
return $this->reflection->returnsReference();
}
/**
* Returns a list of function/method parameters.
*
* @return array
*/
public function getParameters()
{
if (null === $this->parameters) {
$generator = self::$generator;
$this->parameters = array_map(function(TokenReflection\IReflectionParameter $parameter) use ($generator) {
return new ReflectionParameter($parameter, $generator);
}, $this->reflection->getParameters());
$annotations = $this->getAnnotation('param');
if (null !== $annotations) {
foreach ($annotations as $position => $annotation) {
if (isset($parameters[$position])) {
// Standard parameter
continue;
}
if (!preg_match('~^(?:([\\w\\\\]+(?:\\|[\\w\\\\]+)*)\\s+)?\\$(\\w+),\\.{3}(?:\\s+(.*))?($)~s', $annotation, $matches)) {
// Wrong annotation format
continue;
}
list(, $typeHint, $name) = $matches;
if (empty($typeHint)) {
$typeHint = 'mixed';
}
$parameter = new ReflectionParameterMagic(null, self::$generator);
$parameter
->setName($name)
->setPosition($position)
->setTypeHint($typeHint)
->setDefaultValueDefinition(null)
->setUnlimited(true)
->setPassedByReference(false)
->setDeclaringFunction($this);
$this->parameters[$position] = $parameter;
}
}
}
return $this->parameters;
}
/**
* Returns a particular function/method parameter.
*
* @param integer|string $parameterName Parameter name or position
* @return \ApiGen\ReflectionParameter
* @throws \InvalidArgumentException If there is no parameter of the given name.
* @throws \InvalidArgumentException If there is no parameter at the given position.
*/
public function getParameter($parameterName)
{
$parameters = $this->getParameters();
if (is_numeric($parameterName)) {
if (isset($parameters[$parameterName])) {
return $parameters[$parameterName];
}
throw new InvalidArgumentException(sprintf('There is no parameter at position "%d" in function/method "%s"', $parameterName, $this->getName()), Exception\Runtime::DOES_NOT_EXIST);
} else {
foreach ($parameters as $parameter) {
if ($parameter->getName() === $parameterName) {
return $parameter;
}
}
throw new InvalidArgumentException(sprintf('There is no parameter "%s" in function/method "%s"', $parameterName, $this->getName()), Exception\Runtime::DOES_NOT_EXIST);
}
}
/**
* Returns the number of parameters.
*
* @return integer
*/
public function getNumberOfParameters()
{
return $this->reflection->getNumberOfParameters();
}
/**
* Returns the number of required parameters.
*
* @return integer
*/
public function getNumberOfRequiredParameters()
{
return $this->reflection->getNumberOfRequiredParameters();
}
}
|