Skip to content

Commit ccce102

Browse files
authored
Merge pull request #3389 from odan/4x-route-callable
Fix DocBlocks for callable route handlers
2 parents e4aff28 + 727a935 commit ccce102

9 files changed

+43
-43
lines changed

Slim/CallableResolver.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public function resolveMiddleware($toResolve): callable
7979
}
8080

8181
/**
82-
* @param string|callable $toResolve
82+
* @param callable|array{class-string, string}|string $toResolve
8383
*
8484
* @throws RuntimeException
8585
*/
@@ -180,8 +180,9 @@ private function bindToContainer(callable $callable): callable
180180
}
181181

182182
/**
183-
* @param string|callable $toResolve
184-
* @return string|callable
183+
* @param callable|string|array{class-string, string}|mixed $toResolve
184+
*
185+
* @return callable|string|array{class-string, string}|mixed
185186
*/
186187
private function prepareToResolve($toResolve)
187188
{

Slim/Interfaces/AdvancedCallableResolverInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ interface AdvancedCallableResolverInterface extends CallableResolverInterface
1515
/**
1616
* Resolve $toResolve into a callable
1717
*
18-
* @param string|callable $toResolve
18+
* @param callable|array{class-string, string}|string $toResolve
1919
*/
2020
public function resolveRoute($toResolve): callable;
2121

2222
/**
2323
* Resolve $toResolve into a callable
2424
*
25-
* @param string|callable $toResolve
25+
* @param callable|array{class-string, string}|string $toResolve
2626
*/
2727
public function resolveMiddleware($toResolve): callable;
2828
}

Slim/Interfaces/CallableResolverInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ interface CallableResolverInterface
1515
/**
1616
* Resolve $toResolve into a callable
1717
*
18-
* @param string|callable $toResolve
18+
* @param callable|array{class-string, string}|string $toResolve
1919
*/
2020
public function resolve($toResolve): callable;
2121
}

Slim/Interfaces/RouteCollectorInterface.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ public function group(string $pattern, $callable): RouteGroupInterface;
9595
/**
9696
* Add route
9797
*
98-
* @param string[] $methods Array of HTTP methods
99-
* @param string $pattern The route pattern
100-
* @param callable|string $handler The route callable
98+
* @param string[] $methods Array of HTTP methods
99+
* @param string $pattern The route pattern
100+
* @param callable|array{class-string, string}|string $handler The route callable
101101
*/
102102
public function map(array $methods, string $pattern, $handler): RouteInterface;
103103
}

Slim/Interfaces/RouteCollectorProxyInterface.php

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,65 +45,65 @@ public function setBasePath(string $basePath): RouteCollectorProxyInterface;
4545
/**
4646
* Add GET route
4747
*
48-
* @param string $pattern The route URI pattern
49-
* @param callable|string $callable The route callback routine
48+
* @param string $pattern The route URI pattern
49+
* @param callable|array{class-string, string}|string $callable The route callback routine
5050
*/
5151
public function get(string $pattern, $callable): RouteInterface;
5252

5353
/**
5454
* Add POST route
5555
*
56-
* @param string $pattern The route URI pattern
57-
* @param callable|string $callable The route callback routine
56+
* @param string $pattern The route URI pattern
57+
* @param callable|array{class-string, string}|string $callable The route callback routine
5858
*/
5959
public function post(string $pattern, $callable): RouteInterface;
6060

6161
/**
6262
* Add PUT route
6363
*
64-
* @param string $pattern The route URI pattern
65-
* @param callable|string $callable The route callback routine
64+
* @param string $pattern The route URI pattern
65+
* @param callable|array{class-string, string}|string $callable The route callback routine
6666
*/
6767
public function put(string $pattern, $callable): RouteInterface;
6868

6969
/**
7070
* Add PATCH route
7171
*
72-
* @param string $pattern The route URI pattern
73-
* @param callable|string $callable The route callback routine
72+
* @param string $pattern The route URI pattern
73+
* @param callable|array{class-string, string}|string $callable The route callback routine
7474
*/
7575
public function patch(string $pattern, $callable): RouteInterface;
7676

7777
/**
7878
* Add DELETE route
7979
*
80-
* @param string $pattern The route URI pattern
81-
* @param callable|string $callable The route callback routine
80+
* @param string $pattern The route URI pattern
81+
* @param callable|array{class-string, string}|string $callable The route callback routine
8282
*/
8383
public function delete(string $pattern, $callable): RouteInterface;
8484

8585
/**
8686
* Add OPTIONS route
8787
*
88-
* @param string $pattern The route URI pattern
89-
* @param callable|string $callable The route callback routine
88+
* @param string $pattern The route URI pattern
89+
* @param callable|array{class-string, string}|string $callable The route callback routine
9090
*/
9191
public function options(string $pattern, $callable): RouteInterface;
9292

9393
/**
9494
* Add route for any HTTP method
9595
*
96-
* @param string $pattern The route URI pattern
97-
* @param callable|string $callable The route callback routine
96+
* @param string $pattern The route URI pattern
97+
* @param callable|array{class-string, string}|string $callable The route callback routine
9898
*/
9999
public function any(string $pattern, $callable): RouteInterface;
100100

101101
/**
102102
* Add route with multiple methods
103103
*
104-
* @param string[] $methods Numeric array of HTTP method names
105-
* @param string $pattern The route URI pattern
106-
* @param callable|string $callable The route callback routine
104+
* @param string[] $methods Numeric array of HTTP method names
105+
* @param string $pattern The route URI pattern
106+
* @param callable|array{class-string, string}|string $callable The route callback routine
107107
*/
108108
public function map(array $methods, string $pattern, $callable): RouteInterface;
109109

Slim/Interfaces/RouteInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ public function setPattern(string $pattern): RouteInterface;
4747
/**
4848
* Get route callable
4949
*
50-
* @return callable|string
50+
* @return callable|array{class-string, string}|string
5151
*/
5252
public function getCallable();
5353

5454
/**
5555
* Set route callable
5656
*
57-
* @param callable|string $callable
57+
* @param callable|array{class-string, string}|string $callable
5858
*/
5959
public function setCallable($callable): RouteInterface;
6060

Slim/Routing/Route.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class Route implements RouteInterface, RequestHandlerInterface
9191
/**
9292
* Route callable
9393
*
94-
* @var callable|string
94+
* @var callable|array{class-string, string}|string
9595
*/
9696
protected $callable;
9797

@@ -107,15 +107,15 @@ class Route implements RouteInterface, RequestHandlerInterface
107107
protected bool $groupMiddlewareAppended = false;
108108

109109
/**
110-
* @param string[] $methods The route HTTP methods
111-
* @param string $pattern The route pattern
112-
* @param callable|string $callable The route callable
113-
* @param ResponseFactoryInterface $responseFactory
114-
* @param CallableResolverInterface $callableResolver
115-
* @param TContainerInterface $container
110+
* @param string[] $methods The route HTTP methods
111+
* @param string $pattern The route pattern
112+
* @param callable|array{class-string, string}|string $callable The route callable
113+
* @param ResponseFactoryInterface $responseFactory
114+
* @param CallableResolverInterface $callableResolver
115+
* @param TContainerInterface $container
116116
* @param InvocationStrategyInterface|null $invocationStrategy
117-
* @param RouteGroupInterface[] $groups The parent route groups
118-
* @param int $identifier The route identifier
117+
* @param RouteGroupInterface[] $groups The parent route groups
118+
* @param int $identifier The route identifier
119119
*/
120120
public function __construct(
121121
array $methods,
@@ -348,7 +348,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
348348
}
349349
$strategy = $this->invocationStrategy;
350350

351-
/** @var string[] $strategyImplements */
352351
$strategyImplements = class_implements($strategy);
353352

354353
if (

Slim/Routing/RouteCollector.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
use function array_pop;
2626
use function dirname;
2727
use function file_exists;
28-
use function sprintf;
2928
use function is_readable;
3029
use function is_writable;
30+
use function sprintf;
3131

3232
/**
3333
* RouteCollector is used to collect routes and route groups
@@ -282,8 +282,8 @@ public function map(array $methods, string $pattern, $handler): RouteInterface
282282
}
283283

284284
/**
285-
* @param string[] $methods
286-
* @param callable|string $callable
285+
* @param string[] $methods
286+
* @param callable|array{class-string, string}|string $callable
287287
*/
288288
protected function createRoute(array $methods, string $pattern, $callable): RouteInterface
289289
{

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
},
5656
"require-dev": {
5757
"ext-simplexml": "*",
58-
"adriansuter/php-autoload-override": "^1.4",
58+
"adriansuter/php-autoload-override": "^1.4 || ^2",
5959
"guzzlehttp/psr7": "^2.6",
6060
"httpsoft/http-message": "^1.1",
6161
"httpsoft/http-server-request": "^1.1",
@@ -69,7 +69,7 @@
6969
"slim/http": "^1.3",
7070
"slim/psr7": "^1.6",
7171
"squizlabs/php_codesniffer": "^3.10",
72-
"vimeo/psalm": "^5.26.1"
72+
"vimeo/psalm": "^5 || ^6"
7373
},
7474
"autoload": {
7575
"psr-4": {

0 commit comments

Comments
 (0)