Req #76135 [Opn]: isset should support expressions like empty does
| From: | requinix@php.net | Date: | Mon, 15 Nov 2021 16:36:47 +0000 |
| Subject: | Req #76135 [Opn]: isset should support expressions like empty does | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-237771@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=76135&edit=1
ID: 76135
Updated by: requinix@php.net
Reported by: faith dot morante at gmail dot com
Summary: isset should support expressions like empty does
Status: Open
Type: Feature/Change Request
Package: Scripting Engine problem
PHP Version: 7.1.15
Block user comment: N
Private report: N
New Comment:
> Well, why would that be particularly useful? isset() checks that some value is
> set (not IS_UNDEF) and is not null. An expression never evaluates to IS_UNDEF,
> so isset() on an expression would be equivalent to check for !== null.
What about empty? It's equivalent to IS_UNDEF || ==false, but it allows expressions. If isset
should not allow expressions because they're never undefined and you can !==null instead then
empty should not either because they're never undefined and you can ==false (or !expr) instead.
I agree it does feel weird to call isset on an expression, but I don't know if there's an
objective reason to not allow it. (That said, IMO this is still a request and not a bug.)
Previous Comments:
------------------------------------------------------------------------
[2021-11-15 15:51:06] cmb@php.net
> I don't know of any reason why isset shouldn't work on
> expressions.
Well, why would that be particularly useful? isset() checks that
some value is set (not IS_UNDEF) and is not null. An expression
never evaluates to IS_UNDEF, so isset() on an expression would be
equivalent to check for !== null. If one wanted the benefits of
checking multiple expressions in one go, they could define their
own function for that.
------------------------------------------------------------------------
[2018-03-22 05:25:43] requinix@php.net
Why does any function work the way it does?
I don't know of any reason why isset shouldn't work on expressions. I don't like
inconsistencies. Let's make this a feature request instead.
------------------------------------------------------------------------
[2018-03-22 05:21:33] faith dot morante at gmail dot com
I see, thanks!
But how come the empty function works with non-variables?
------------------------------------------------------------------------
[2018-03-22 05:17:07] requinix@php.net
Don't use isset on the result of an expression.
If you're trying to say that the documentation does not mention this, it does:
> Warning: isset() only works with variables as passing anything else will result in a parse
> error.
------------------------------------------------------------------------
[2018-03-22 05:11:32] faith dot morante at gmail dot com
Description:
------------
---
From manual page: http://www.php.net/function.isset
---
Getting this error:
Cannot use isset() on the result of an expression (you can use "null !== expression"
instead) on line number 3
When explicitly passing a data in isset. Passing a variable with the same data works,though.
Test script:
---------------
var_dump(isset(null));
Expected result:
----------------
false
Actual result:
--------------
Cannot use isset() on the result of an expression (you can use "null !== expression"
instead) on line number 3
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76135&edit=1