Proposed RFC
| From: | Antony D'Andrea | Date: | Thu, 03 Nov 2016 15:02:08 +0000 |
| Subject: | Proposed RFC | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-96719@lists.php.net to get a copy of this message | ||
Hi all,
First off, this is my first time e-mailing internals or even thinking about submitting RFC. Please
forgive me if I fail to follow some kind of convention.
In PHP 7.0, we were given the Null Coalesce operator. For example:
echo $array['key']??"key is not set"
would be the same as:
echo (isset($array['key'])?$array['key']:"key is not set"
This is a great feature, that makes code much cleaner.
This works on the principle that "$array['key']" is "NULL".
I would like to propose a new feature that is as clean as this but is a slightly different use case.
This would require a new operator (up for discussion, but an early idea is "?!") For
example:
echo (!is_infinite($n1/$n2)?!0);
Would output ($n1/$n2) if it is "true" and 0 if false.
Right now, the closest we have to this is ?: operator. The problem with this is that it could get
very messy as you still have to do:
echo (!is_infinite($n1/$n2)?$n1/$n2:0);
I have obviously over simplified the example. You wouldn't have a big problem in this case, but
if the subject of the function is much longer, it can become complicated very quickly.
Alternatively, a perhaps more general feature would be to just have the same functionality as the
Null Coalesce, but with true/false rather than Null/Not Null.
Please let me know if there is something in these ideas or anyway to improve them. I should also
note that I would need a volunteer to implement this as my "C" skills are non-existent and
I wouldn't have the confidence to delve into the the PHP source.
Thanks for your time.
Best,
Antony D'Andrea