On Thu, Oct 24, 2019 at 1:33 PM Dan Ackroyd <dan...@basereality.com> wrote:

> On Thu, 24 Oct 2019 at 18:21, Ken Stanley <doh...@gmail.com> wrote:
> >
> > Since PHP 7.0 brought forward the Null Coalescing Operator (??), writing
> > more succinct code for how to handle null values has been a blessing.
> But,
> > what about the inverse when you want to do something when a value is not
> > null?
>
> Hi Ken,
>
> It may help to give a real world example, rather than a metasyntactic
> one, as I can't immediately see how this would be useful.
>
> People have been expressing a concern over 'symbol soup' for similar
> ideas. The null colalesce scenario happens frequently enough, that it
> seemed to overcome the hurdle needed for acceptance. Again, giving a
> real world example of what you currently need to do frequently might
> help other people understand the need.
>
> cheers
> Dan
>

Hi Dan,

After some thought, and searching through my existing code bases, I believe
I've come up with a decent code example to help demonstrate the usefulness
of the proposed anti-coalescing-operator:

Without !??:
<?php

class ExampleController
{
    /**
     * PATCH a User object.
     */
    public function saveAction(int $userId)
    {
        $user = $this->getUser($userId);

        if (isset($_SERVER['fname']) {
            $user->setName($_SERVER['fname']);
        }

        if (isset($_SERVER['lname']) {
            $user->setName($_SERVER['lname']);
        }

        if (isset($_SERVER['mname']) {
            $user->setName($_SERVER['mname']);
        }

        if (isset($_SERVER['phone']) {
            $user->setName($_SERVER['phone']);
        }

        if (isset($_SERVER['email']) {
            $user->setName($_SERVER['email']);
        }

        $this-saveUser($user);
    }
}

With !??:
<?php

class ExampleController
{
    /**
     * PATCH a User object.
     */
    public function saveAction(int $userId)
    {
        $user = $this->getUser($userId);

        $_SERVER['fname'] !?? $user->setName($_SERVER['fname']);
        $_SERVER['lname'] !?? $user->setName($_SERVER['lname']);
        $_SERVER['mname'] !?? $user->setName($_SERVER['mname']);
        $_SERVER['phone'] !?? $user->setName($_SERVER['phone']);
        $_SERVER['email'] !?? $user->setName($_SERVER['email']);

        $this-saveUser($user);
    }
}
Thank you,
Ken Stanley

Reply via email to