comparison vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php @ 16:c2387f117808

Routine composer update
author Chris Cannam
date Tue, 10 Jul 2018 15:07:59 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
15:e200cb7efeb3 16:c2387f117808
56 } else { 56 } else {
57 $reflection = new \ReflectionFunction($controller); 57 $reflection = new \ReflectionFunction($controller);
58 } 58 }
59 59
60 foreach ($reflection->getParameters() as $param) { 60 foreach ($reflection->getParameters() as $param) {
61 $arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param), $this->isVariadic($param), $this->hasDefaultValue($param), $this->getDefaultValue($param), $param->allowsNull()); 61 $arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param, $reflection), $this->isVariadic($param), $this->hasDefaultValue($param), $this->getDefaultValue($param), $param->allowsNull());
62 } 62 }
63 63
64 return $arguments; 64 return $arguments;
65 } 65 }
66 66
105 * 105 *
106 * @param \ReflectionParameter $parameter 106 * @param \ReflectionParameter $parameter
107 * 107 *
108 * @return null|string 108 * @return null|string
109 */ 109 */
110 private function getType(\ReflectionParameter $parameter) 110 private function getType(\ReflectionParameter $parameter, \ReflectionFunctionAbstract $function)
111 { 111 {
112 if ($this->supportsParameterType) { 112 if ($this->supportsParameterType) {
113 if (!$type = $parameter->getType()) { 113 if (!$type = $parameter->getType()) {
114 return; 114 return;
115 } 115 }
116 $typeName = $type instanceof \ReflectionNamedType ? $type->getName() : $type->__toString(); 116 $name = $type instanceof \ReflectionNamedType ? $type->getName() : $type->__toString();
117 if ('array' === $typeName && !$type->isBuiltin()) { 117 if ('array' === $name && !$type->isBuiltin()) {
118 // Special case for HHVM with variadics 118 // Special case for HHVM with variadics
119 return; 119 return;
120 } 120 }
121 } elseif (preg_match('/^(?:[^ ]++ ){4}([a-zA-Z_\x7F-\xFF][^ ]++)/', $parameter, $name)) {
122 $name = $name[1];
123 } else {
124 return;
125 }
126 $lcName = strtolower($name);
121 127
122 return $typeName; 128 if ('self' !== $lcName && 'parent' !== $lcName) {
129 return $name;
123 } 130 }
124 131 if (!$function instanceof \ReflectionMethod) {
125 if (preg_match('/^(?:[^ ]++ ){4}([a-zA-Z_\x7F-\xFF][^ ]++)/', $parameter, $info)) { 132 return;
126 return $info[1]; 133 }
134 if ('self' === $lcName) {
135 return $function->getDeclaringClass()->name;
136 }
137 if ($parent = $function->getDeclaringClass()->getParentClass()) {
138 return $parent->name;
127 } 139 }
128 } 140 }
129 } 141 }