Re: Add $this return type
Juliette Reinders Folmer said:
> Not a fan of using a variable as a return type. This will cause
> havoc for Tokenizer based static analysis tooling.
I will concede that until the tools are updated to handle the new
(currently invalid) syntax, it would cause issues. But that happens
everytime a new syntax is introduced into PHP anyway (the original
return-types RFC, match, the proposed property accessors, etc.), so
I'm a bit confused as why this is an issue that would stop the RFC?
---
Juliette Reinders Folmer said:
> Also don't really see the need as there is the static
return type
> already.
To quote Nicolas, who said it far better than I could:
> I tried switching from the @return $this
annotation to
> function (): static
, which is the closest approximation currently
> supported by the engine, when I realized that this would loosen the
> semantics of the corresponding interfaces[.]
---
Marco Pivetta said:
> I'd see it as useful if the type conveyed identity too, although it
> means that I would never use it, since I design immutable APIs, when
> possible :D
If reading documentation, I'd argue that seeing function(): $this
in
a class already conveys plenty of "identity". If you're talking about
using the Reflection API to get identity the original RFC by Nikita
stated:
> The $this
type is a subtype of static
. As such, it is possible
> to restrict a static
type to $this
in a subclass (but not the
> other way around).
> In reflection, the $this
type is represented as a
> ReflectionNamedType
with isBuiltin() == true
and
> getName() == "$this"
.
So perhaps a change is needed in the returned ReflectionNamedType
to
better identity the actual class of $this
? Or am I missing your
point about identity here?
---
Bruce Weirdan said:
>> Luigi Cardamone wrote:
>> Is it possible to replace "$this" with "this"? Cleaner and coherent
>> with "self".
>
> That wouldn't be possible, as this
is a valid class name:
The "Return Type Declarations", "Scalar Type Declarations", "Reserve
More Types", and "Void Return Type" RFCs all prohibited their usage as
class, interface and trait names. Using this
or same
or
whatever
else is decided is just par for the course.
However, that said, a search of github for:
- language:php "class This "
returns 5.1k results
(but it appears that most results are docblock comments)
- language:php "class This extends"
returns 27 results
- language:php "class This implements"
returns 8 results
- language:php "class Same "
returns 290 results
- language:php "class Same extends"
returns 193 results
- language:php "class Same implements"
returns 14 results
- language:php "@return $this"
returns 485k results.
---
Regards,
radar3301
Thread (8 messages)