8000 [HttpKernel] made a small internal refactoring to ease extensibility · ajitomatix/symfony@54999ef · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 27, 2024. It is now read-only.

Commit 54999ef

Browse files
committed
[HttpKernel] made a small internal refactoring to ease extensibility
1 parent be031f5 commit 54999ef

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,29 +93,38 @@ public function getController(Request $request)
9393
*/
9494
public function getArguments(Request $request, $controller)
9595
{
96-
$attributes = $request->attributes->all();
97-
9896
if (is_array($controller)) {
9997
$r = new \ReflectionMethod($controller[0], $controller[1]);
100-
$repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]);
10198
} elseif (is_object($controller)) {
10299
$r = new \ReflectionObject($controller);
103100
$r = $r->getMethod('__invoke');
104-
$repr = get_class($controller);
105101
} else {
106102
$r = new \ReflectionFunction($controller);
107-
$repr = $controller;
108103
}
109104

105+
return $this->doGetArguments($request, $controller, $r->getParameters());
106+
}
107+
108+
protected function doGetArguments(Request $request, $controller, array $parameters)
109+
{
110+
$attributes = $request->attributes->all();
110111
$arguments = array();
111-
foreach ($r->getParameters() as $param) {
112+
foreach ($parameters as $param) {
112113
if (array_key_exists($param->getName(), $attributes)) {
113114
$arguments[] = $attributes[$param->getName()];
114115
} elseif ($param->getClass() && $param->getClass()->isInstance($request)) {
115116
$arguments[] = $request;
116117
} elseif ($param->isDefaultValueAvailable()) {
117118
$arguments[] = $param->getDefaultValue();
118119
} else {
120+
if (is_array($controller)) {
121+
$repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]);
122+
} elseif (is_object($controller)) {
123+
$repr = get_class($controller);
124+
} else {
125+
$repr = $controller;
126+
}
127+
119128
throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).', $repr, $param->getName()));
120129
}
121130
}

0 commit comments

Comments
 (0)
0