Req #76135 [Opn]: isset should support expressions like empty does

From: 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

« previous php.bugs (#237771) next »