Skip to content

Commit 915736d

Browse files
minor #47016 Improve some PHPdocs based on existing Symfony stubs in PHPstan and Psalm (mdeboer, wouterj)
This PR was merged into the 6.2 branch. Discussion ---------- Improve some PHPdocs based on existing Symfony stubs in PHPstan and Psalm | Q | A | ------------- | --- | Branch? | 6.2 | Bug fix? | no | New feature? | no | Deprecations? | no (strictly spoken yes, as I guess DebugClassLoader will trigger deprecations for some now?) | Tickets | Replaces #40783 | License | MIT | Doc PR | symfony/symfony-docs#17064 Todo --- * [x] Review the Psalm check of this PR * [x] Test the changes with DebugClassLoader in a real app Description --- This PR adds some more information to the PHPdoc of Symfony classes. By moving the information from the current stubs of static analyzers into Symfony itself: (1) we can improve the experience for all users, (2) reduce false-positives from our own Psalm check and (3) make sure they are in sync with changes done on these classes. <s>To avoid a PR that is too big to review and maintain, the scope of this PR is deliberately kept narrow: * Only PHPdoc from either [Psalm's Symfony stubs](https://github.com/psalm/psalm-plugin-symfony/tree/master/src/Stubs) or [PHPStan's Symfony stubs](https://github.com/phpstan/phpstan-symfony/tree/1.2.x/stubs) is added * The PHPdoc MUST NOT break PHPstorm * The PHPdoc MUST be supported by both PHPstan and Psalm (those are the only two static analyzers that currently ship an official Symfony plugin afaik) * The PHPdoc SHOULD NOT duplicate anything that can already be deduced from either PHP's type declarations or already existing PHPdoc. * The PHPdoc MUST document the contract and NOT be added to fit a 95% use-case or improve auto-completion.</s> EDIT: Replaced the guidelines by symfony/symfony-docs#17064 On top of this, to get this PR approved quicker, I've left out all stubs from the Form (based on the discussions in #40783) and most of [PHPStan's `Envelope` stub](https://github.com/psalm/psalm-plugin-symfony/blob/master/src/Stubs/common/Component/Messenger/Envelope.stubphp) (due to complexity of the PHPdoc). Commits ------- f5a802ab85 [DependencyInjection] Add nice exception when using non-scalar parameter as array key fa7703ba4a [ErrorHandler] Do not patch return types that are not a valid PHP type 38ab6de900 Improve some PHPdocs based on existing Symfony stubs in PHPstan and Psalm
2 parents d485a66 + c22d48e commit 915736d

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

Command/Command.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Symfony\Component\Console\Exception\ExceptionInterface;
2020
use Symfony\Component\Console\Exception\InvalidArgumentException;
2121
use Symfony\Component\Console\Exception\LogicException;
22+
use Symfony\Component\Console\Helper\HelperInterface;
2223
use Symfony\Component\Console\Helper\HelperSet;
2324
use Symfony\Component\Console\Input\InputArgument;
2425
use Symfony\Component\Console\Input\InputDefinition;
@@ -677,6 +678,8 @@ public function getUsages(): array
677678
/**
678679
* Gets a helper instance by name.
679680
*
681+
* @return HelperInterface
682+
*
680683
* @throws LogicException if no HelperSet is defined
681684
* @throws InvalidArgumentException if the helper is not defined
682685
*/

Command/LazyCommand.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Console\Completion\CompletionInput;
1616
use Symfony\Component\Console\Completion\CompletionSuggestions;
1717
use Symfony\Component\Console\Completion\Suggestion;
18+
use Symfony\Component\Console\Helper\HelperInterface;
1819
use Symfony\Component\Console\Helper\HelperSet;
1920
use Symfony\Component\Console\Input\InputDefinition;
2021
use Symfony\Component\Console\Input\InputInterface;
@@ -176,7 +177,7 @@ public function getUsages(): array
176177
return $this->getCommand()->getUsages();
177178
}
178179

179-
public function getHelper(string $name): mixed
180+
public function getHelper(string $name): HelperInterface
180181
{
181182
return $this->getCommand()->getHelper($name);
182183
}

Helper/HelperSet.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
*
1919
* @author Fabien Potencier <[email protected]>
2020
*
21-
* @implements \IteratorAggregate<string, Helper>
21+
* @implements \IteratorAggregate<string, HelperInterface>
2222
*/
2323
class HelperSet implements \IteratorAggregate
2424
{
25-
/** @var array<string, Helper> */
25+
/** @var array<string, HelperInterface> */
2626
private array $helpers = [];
2727

2828
/**
29-
* @param Helper[] $helpers An array of helper
29+
* @param HelperInterface[] $helpers
3030
*/
3131
public function __construct(array $helpers = [])
3232
{

Output/OutputInterface.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,17 @@ interface OutputInterface
3333
/**
3434
* Writes a message to the output.
3535
*
36-
* @param $newline Whether to add a newline
37-
* @param $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
36+
* @param bool $newline Whether to add a newline
37+
* @param self::VERBOSITY_*|self::OUTPUT_* $options A bitmask of options (one of the OUTPUT or VERBOSITY constants),
38+
* 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
3839
*/
3940
public function write(string|iterable $messages, bool $newline = false, int $options = 0);
4041

4142
/**
4243
* Writes a message to the output and adds a newline at the end.
4344
*
44-
* @param $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
45+
* @param self::VERBOSITY_*|self::OUTPUT_* $options A bitmask of options (one of the OUTPUT or VERBOSITY constants),
46+
* 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
4547
*/
4648
public function writeln(string|iterable $messages, int $options = 0);
4749

0 commit comments

Comments
 (0)