8000 use proper return types in ErrorHandler and ArgumentResolver · symfony/symfony@2f9121b · GitHub
[go: up one dir, main page]

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2f9121b

Browse files
committed
use proper return types in ErrorHandler and ArgumentResolver
1 parent aa4385d commit 2f9121b

File tree

6 files changed

+23
-34
lines changed

6 files changed

+23
-34
lines changed

src/Symfony/Component/Debug/ErrorHandler.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -369,18 +369,13 @@ private function reRegister($prev)
369369
/**
370370
* Handles errors by filtering then logging them according to the configured bit fields.
371371
*
372-
* @param int $type One of the E_* constants
373-
* @param string $message
374-
* @param string $file
375-
* @param int $line
376-
*
377372
* @return bool Returns false when no handling happens so that the PHP engine can handle the error itself
378373
*
379374
* @throws \ErrorException When $this->thrownErrors requests so
380375
*
381376
* @internal
382377
*/
383-
public function handleError($type, $message, $file, $line)
378+
public function handleError(int $type, string $message, string $file, int $line): bool
384379
{
385380
// @deprecated to be removed in Symfony 5.0
386381
if (\PHP_VERSION_ID >= 70300 && $message && '"' === $message[0] && 0 === strpos($message, '"continue') && preg_match('/^"continue(?: \d++)?" targeting switch is equivalent to "break(?: \d++)?"\. Did you mean to use "continue(?: \d++)?"\?$/', $message)) {
@@ -443,7 +438,7 @@ public function handleError($type, $message, $file, $line)
443438
self::$silencedErrorCache[$id][$message] = $errorAsException;
444439
}
445440
if (null === $lightTrace) {
446-
return;
441+
return true;
447442
}
448443
} else {
449444
$errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line);

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,16 @@ public function getArguments(Request $request, $controller)
5555

5656
$resolved = $resolver->resolve($request, $metadata);
5757

58-
if (!$resolved instanceof \Generator) {
59-
throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', \get_class($resolver)));
60-
}
61-
58+
$atLeastOne = false;
6259
foreach ($resolved as $append) {
60+
$atLeastOne = true;
6361
$arguments[] = $append;
6462
}
6563

64+
if (!$atLeastOne) {
65+
throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', \get_class($resolver)));
66+
}
67+
6668
// continue to the next controller argument
6769
continue 2;
6870
}

src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/VariadicValueResolver.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ public function resolve(Request $request, ArgumentMetadata $argument)
4141
throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), \gettype($values)));
4242
}
4343

44-
foreach ($values as $value) {
45-
yield $value;
46-
}
44+
yield from $values;
4745
}
4846
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function supports(Request $request, ArgumentMetadata $argument);
3737
* @param Request $request
3838
* @param ArgumentMetadata $argument
3939
*
40-
* @return \Generator
40+
* @return iterable
4141
*/
4242
public function resolve(Request $request, ArgumentMetadata $argument);
4343
}

src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactory.php

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,30 +42,24 @@ public function createArgumentMetadata($controller)
4242

4343
/**
4444
* Returns an associated type to the given parameter if available.
45-
*
46-
* @param \ReflectionParameter $parameter
47-
*
48-
* @return string|null
4945
*/
50-
private function getType(\ReflectionParameter $parameter, \ReflectionFunctionAbstract $function)
46+
private function getType(\ReflectionParameter $parameter, \ReflectionFunctionAbstract $function): ?string
5147
{
5248
if (!$type = $parameter->getType()) {
53-
return;
49+
return null;
5450
}
5551
$name = $type->getName();
56-
$lcName = strtolower($name);
5752

58-
if ('self' !== $lcName && 'parent' !== $lcName) {
59-
return $name;
60-
}
61-
if (!$function instanceof \ReflectionMethod) {
62-
return;
63-
}
64-
if ('self' === $lcName) {
65-
return $function->getDeclaringClass()->name;
66-
}
67-
if ($parent = $function->getDeclaringClass()->getParentClass()) {
68-
return $parent->name;
53+
if ($function instanceof \ReflectionMethod) {
54+
$lcName = strtolower($name);
55+
switch ($lcName) {
56+
case 'self':
57+
return $function->getDeclaringClass()->name;
58+
case 'parent':
59+
return ($parent = $function->getDeclaringClass()->getParentClass()) ? $parent->name : null;
60+
}
6961
}
62+
63+
return $name;
7064
}
7165
}

src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolverTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public function testGetArgumentWithoutArray()
185185
$resolver = new ArgumentResolver($factory, [$valueResolver]);
186186

187187
$valueResolver->expects($this->any())->method('supports')->willReturn(true);
188-
$valueResolver->expects($this->any())->method('resolve')->willReturn('foo');
188+
$valueResolver->expects($this->any())->method('resolve')->willReturn([]);
189189

190190
$request = Request::create('/');
191191
$request->attributes->set('foo', 'foo');

0 commit comments

Comments
 (0)
0