>
> 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 see where you're coming from, in my code I had to deal with a lot of
APIs with models which have nullable properties, but they shouldn't be
null if some conditions are met.
So I work with them in this way
```php
if ($response->code === ResponseCode::Success) {
    // order and quantity are nullable
    return $response->data->order->quantity ?? throw new
UnexpectedResponseException($response);

    // With method calls you would need to add nullsafe operators
    // order and date are nullable
    return $response->data->order?->date?->format('Y-m-d') ?? throw
new UnexpectedResponseException($response);
}
```
UnexpectedResponseException is just an exception that keeps faulty
response, so I can catch it and act on it, or it just gets logged and
I can show producers of API that they have a problem.

I see a point in !-> operator if it would work just like that. Throws
a specific error that has an object that triggered this error.

Reply via email to