Re: RFC: Not Null Assertion Operator
| From: | Larry Garfield | Date: | Thu, 06 Feb 2025 19:16:46 +0000 |
| Subject: | Re: RFC: Not Null Assertion Operator | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-126312@lists.php.net to get a copy of this message | ||
On Thu, Feb 6, 2025, at 6:50 AM, Mihail Liahimov wrote:
> Thank you for your answer. Now I will give examples for better
> understanding.
>
> Simple examples from Typescript:
>
> let foo = ...
> foo!.bar()
> foo!.someProperty.baz()
>
> Examples of potentially using in PHP:
> Without this operator we writing this code:
>
> $foo = ...
>
> if ($foo === null) {
> throw new FooIsNullException();
> }
>
> $foo->bar.
>
> With this operator:
>
> $foo!->bar
> $foo!->someProperty->method();
> $foo!->someProperty->anotherProperty!->method();
>
> I think the postfix operator would be illogical in PHP because my operator
> is similar to the existing nullsafe operator in syntax. And it would be
> strange if its syntax were different.
> Or we can implement both operator syntaxes: prefix for accessing
> properties, and postfix for use with variables, as in your example.
I am struggling to see the point of this in PHP. We don't have a compile-time check for that
kind of null the way Kotlin or TypeScript do. At runtime, it would already throw a value I cannot
control. With this... it would throw a value I cannot control.
How is this a win?
--Larry Garfield