Skip to content

Commit 2409ae2

Browse files
committed
remove catching reflection e
1 parent 0d3e1d7 commit 2409ae2

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ composer require miladrahimi/phprouter "4.*"
4242
First of all, you need to configure your webserver to handle all the HTTP requests with a single PHP file like `index.php`. Here you can see sample configurations for Apache HTTP Server and NGINX.
4343

4444
* Apache `.htaccess` sample:
45-
```
45+
```apacheconfig
4646
<IfModule mod_rewrite.c>
4747
<IfModule mod_negotiation.c>
4848
Options -MultiViews

src/Router.php

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -371,36 +371,33 @@ private function runControllerThroughMiddleware(
371371
* @param ServerRequestInterface $request
372372
* @return ResponseInterface|mixed|null
373373
* @throws InvalidControllerException
374+
* @throws ReflectionException
374375
*/
375376
private function runController($controller, array $parameters, ServerRequestInterface $request)
376377
{
377-
try {
378-
if (is_string($controller) && strpos($controller, '@')) {
379-
list($className, $methodName) = explode('@', $controller);
380-
381-
if (class_exists($className) == false) {
382-
throw new InvalidControllerException("Controller class `$controller` not found.");
383-
}
378+
if (is_string($controller) && strpos($controller, '@')) {
379+
list($className, $methodName) = explode('@', $controller);
384380

385-
$classObject = new $className();
386-
387-
if (method_exists($classObject, $methodName) == false) {
388-
throw new InvalidControllerException("Controller method `$methodName` not found.");
389-
}
381+
if (class_exists($className) == false) {
382+
throw new InvalidControllerException("Controller class `$controller` not found.");
383+
}
390384

391-
$parameters = $this->arrangeMethodParameters($className, $methodName, $parameters, $request);
385+
$classObject = new $className();
392386

393-
$controller = [$classObject, $methodName];
394-
} elseif (is_callable($controller)) {
395-
$parameters = $this->arrangeFunctionParameters($controller, $parameters, $request);
396-
} else {
397-
throw new InvalidControllerException('Invalid controller: ' . $controller);
387+
if (method_exists($classObject, $methodName) == false) {
388+
throw new InvalidControllerException("Controller method `$methodName` not found.");
398389
}
399390

400-
return call_user_func_array($controller, $parameters);
401-
} catch (ReflectionException $e) {
402-
throw new InvalidControllerException('Reflection error', 0, $e);
391+
$parameters = $this->arrangeMethodParameters($className, $methodName, $parameters, $request);
392+
393+
$controller = [$classObject, $methodName];
394+
} elseif (is_callable($controller)) {
395+
$parameters = $this->arrangeFunctionParameters($controller, $parameters, $request);
396+
} else {
397+
throw new InvalidControllerException('Invalid controller: ' . $controller);
403398
}
399+
400+
return call_user_func_array($controller, $parameters);
404401
}
405402

406403
/**
@@ -457,6 +454,7 @@ function (ReflectionParameter $parameter) use ($parameters, $request) {
457454
return $parameters[$parameter->getName()];
458455
}
459456

457+
/** @noinspection PhpPossiblePolymorphicInvocationInspection */
460458
if (
461459
($parameter->getType() && $parameter->getType()->getName() == ServerRequestInterface::class) ||
462460
($parameter->getType() && $parameter->getType()->getName() == ServerRequest::class) ||
@@ -465,6 +463,7 @@ function (ReflectionParameter $parameter) use ($parameters, $request) {
465463
return $request;
466464
}
467465

466+
/** @noinspection PhpPossiblePolymorphicInvocationInspection */
468467
if (
469468
($parameter->getType() && $parameter->getType()->getName() == Router::class) ||
470469
($parameter->getName() == 'router')

0 commit comments

Comments
 (0)