Skip to content

Fixed the @return value of Response::setStatusCode() #20290

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from

Conversation

javiereguiluz
Copy link
Member

Q A
Branch? 2.7
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #19821
License MIT
Doc PR -

@fabpot
Copy link
Member

fabpot commented Oct 24, 2016

I still don't know what the "best practices" is here as I remember some discussions about this. Anyway, don't you think we should fix all the @return Response in this file at least for consistency?

@@ -447,7 +447,7 @@ public function getProtocolVersion()
* If the status text is null it will be automatically populated for the known
* status codes and left empty otherwise.
*
* @return Response
* @return $this
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I vote for @return self since it's now used in php 7 as returned type hint

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What PSR-X tells us about this?

Copy link
Contributor

@HeahDude HeahDude Oct 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For phpdoc see https://www.phpdoc.org/docs/latest/references/phpdoc/types.html, selfis in the list. Same for the php RFC about return type hint, self and parent https://wiki.php.net/rfc/return_types#differences_from_past_rfcs.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the link, looks like self is in the Appendix A as well https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types

Copy link
Contributor

@ro0NL ro0NL Oct 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$this is allowed

https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types

> keyword = "resource" / "self" / "static" / "string" / "true" / "void" / "$this"

Didnt read well @HeahDude :)

For PHPStorm $this gives way better DX so it seems (opposed to self).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For PHPStorm $this gives way better DX so it seems (opposed to self).

How that? We use self in many projects for some time now and it works pretty well.

Copy link
Contributor

@ro0NL ro0NL Oct 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Changing FormConfigBuilderInterface::addEventListener from @return self to @return $this (or @return static)

image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😭

Copy link
Contributor

@ogizanagi ogizanagi Oct 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I personally use static everytime (because it behaves like late static binding), but according to PSR-5 Keywords section, 14-15:

static, the element to which this type applies is of the same class as which the documented element is contained, or when encountered in a subclass is of type of that subclass instead of the original class.

This keyword behaves the same way as the keyword for late static binding (not the static method, property, nor variable modifier) as defined by PHP.

$this, the element to which this type applies is the same exact instance as the current class in the given context. As such this type is a stricter version of static as, in addition, the returned instance must not only be of the same class but also the same instance.

$this seems the most appropriate. 👍

self isn't because:

the element to which this type applies is of the same class as which the documented element is originally contained

which means:

it may lead to confusing situations when inheritance is involved

@@ -219,7 +219,7 @@ public function __construct($content = '', $status = 200, $headers = array())
* @param int $status The response status code
* @param array $headers An array of response headers
*
* @return Response
* @return $this
Copy link
Contributor

@ro0NL ro0NL Oct 25, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure this goes for static. Perhaps use @return static in these cases.

edit: it works though :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be static indeed (IMHO)

@chalasr
Copy link
Member

chalasr commented Oct 27, 2016

👍

Status: Reviewed

@xabbuh
Copy link
Member

xabbuh commented Oct 31, 2016

👍 LGTM

@fabpot
Copy link
Member

fabpot commented Oct 31, 2016

What about fixing the whole codebase instead of just one class? I can do it it you want as merging into other branches will be difficult.

@javiereguiluz
Copy link
Member Author

@fabpot 👍 I agree. Please, fix the entire codebase as you'll do it better than me. Thanks!

@javiereguiluz javiereguiluz added this to the 3.2 milestone Nov 7, 2016
@fabpot fabpot removed this from the 3.2 milestone Nov 16, 2016
@nicolas-grekas nicolas-grekas added this to the 2.7 milestone Dec 6, 2016
@staabm
Copy link
Contributor

staabm commented Dec 25, 2016

Should this be something checked by the cs-fixer?

@fabpot
Copy link
Member

fabpot commented Dec 26, 2016

see #21054

@fabpot fabpot closed this Dec 26, 2016
fabpot added a commit that referenced this pull request Dec 27, 2016
…ant (fabpot)

This PR was merged into the 2.7 branch.

Discussion
----------

Fix @return statements to use $this or static when relevant

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #20290
| License       | MIT
| Doc PR        | n/a

see #20290

Commits
-------

3c0693d fixed @return when returning this or static
nicolas-grekas added a commit that referenced this pull request Dec 28, 2016
This PR was merged into the 2.7 branch.

Discussion
----------

[Config] Improve PHPdoc / IDE autocomplete

| Q             | A
| ------------- | ---
| Branch?       | 2.7
| Bug fix?      | yes-ish
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!--highly recommended for new features-->

The missing pieces for fixing the autocomplete in IDE's (tested in `PhpStorm 2016.3.2`).

Each method seems to be found now for the framework bundle configuration 😱

Actually uses #20923 where needed, but i think we should go with it consistently.

Relates to #20290 (comment)

Commits
-------

3f3c6e0 [Config] Improve PHPdoc / IDE autocomplete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants