Re: Inline conditional that returns null if falsy

From: Date: Tue, 23 Feb 2021 15:26:11 +0000
Subject: Re: Inline conditional that returns null if falsy
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-113225@lists.php.net to get a copy of this message
Hi,

On Fri, Feb 12, 2021 at 8:45 PM Ben Ramsey <ben@benramsey.com> wrote:

>
> I think it might be a good idea to check other languages to see if they
> support something like this. We could use their examples as points of
> reference for discussing whether to include this functionality in PHP.
>

On Sat, Feb 13, 2021 at 5:22 PM David Rodrigues <david.proweb@gmail.com>
wrote:

>
> One of the examples I have is when I need to include a class in an HTML
> element conditionally. There are probably better ways, but this is a quick
> one for simple situations:
>
> <div class="user {{ $user => "online" }}">...</div> vs.
> <div class="user {{ $user ? "online" : null }}">...</div>
>

On Tue, Feb 23, 2021 at 3:31 PM Nikita Popov <nikita.ppv@gmail.com> wrote:

>
> There's a limited budget for this kind of syntax sugar, and we already have
> ?:, ??, ??=, ?->. I don't think there's space for yet another shorthand
> conditional syntax.
>
> Note that => cannot be used for this purpose, as it is already used for
> array literals.
>

In Twig <https://en.wikipedia.org/wiki/Twig_(template_engine)>,
the "else"
part of a ternary expression is optional (colon included) and defaults to
an empty string.  So, the following two lines are equivalent:

     <div class="user {{ user ? 'online' }}">...</div>
     <div class="user {{ user ? 'online' : ''
}}">...</div>

Maybe PHP could do the same (with null rather than an empty string for
the default), i.e.:

    var_dump(true ? 'foo'); // string(3) "foo"
    var_dump(false ? 'foo'); // NULL

but I'm not sure if the added complexity (in parser implementation and in
the language) would be worth it, to avoid typing " : null", nor if everyone
would actually find the shorthand more readable?

-- 
Guilliam Xavier


Thread (23 messages)

« previous php.internals (#113225) next »