Heya,

On Tue, Nov 3, 2020, 17:38 Eugene Sidelnyk <zsidel...@gmail.com> wrote:

> Hello, internals!
> I am wondering why don't we use ordinary `->` operator with safe null
> handling? Programmers will be more prone to return null values. And thus,
> in most of cases `?->` will replace `->`.
> Why do we need another operator, if we can implement null safe in current
> operator without BC breaks?
>

Overall, "null safe" can be very dangerous if made the default.

Here's a scenario where I'd never want "null safe" behaviour (which does
anything but introducing safety):

```php
$accounts->get($receiver)
    ->addFunds(
        $accounts->get($sender)
            ->detractFunds($amount)
    );
```

In the above scenario, if the first `$accounts->get()` call returns `null`
for any reason, you may actually destroy money (funds detracted, but never
added to another account).

The example is simplistic, but it shows that "null safe" is everything but
"safe", and it must instead be used only where it absolutely makes sense to
suppress null reference errors.

Similar behaviour can be observed around cast operators, which are too lax
for most businesses logic:
https://github.com/ShittySoft/symfony-live-berlin-2018-doctrine-tutorial/pull/3#issuecomment-460441229

Safe = crashes when it should crash.

>

Reply via email to