[Discussion] `ifset()` language construct

From: Date: Mon, 16 Sep 2019 05:36:12 +0000
Subject: [Discussion] `ifset()` language construct
Groups: php.internals 
Request: Send a blank email to internals+get-107135@lists.php.net to get a copy of this message
Hi Internals I don't have permission to create RFCs but I would like to propose/discuss new language construct called ifset() which is syntactic sugar to null coalescing operator with rhs value null. The goal of this proposal is similar to Andrea Fauld's proposal ( https://wiki.php.net/rfc/unary_null_coalescing_operator), and the chosen keyword is similar to historical discussion ifsetor(). Here's an example. $result = $a ?? null; vs $result = ifset($a); $result = $a ?? $b ?? $c ?? $d ?? $e ?? null; vs $result = ifset($a, $b, $c, $d, $e); As you can see ifset() does not make code much shorter but the main goal of this syntax is expressiveness not shortness. someFunc( $arg1, $arg2, $longVariableName1 ?? $longVariableName2 ?? $longVariableName3 ?? null, $arg4, ); vs someFunc( $arg1, $arg2, ifset( $longVariableName1, $longVariableName2, $longVariableName3, ), $arg4, ); I know that this proposal is highly unlikely to be accepted because it just does same as ?? but in different way and it introduces new keyword (we don't have any new keyword since yield in 5.5) and, furthermore, I did search through github and found some projects using ifset as function name (https://github.com/search?l=PHP&q=ifset&type=Code). Here's the patch: https://github.com/webdevxp/php-src Cheers

« previous php.internals (#107135) next »