rfc:null_coalesce_equal_operator

PHP RFC: Null Coalescing Assignment Operator

Introduction

Combined assignment operators have been around since 1970's, appearing first in the C Programming Language. For example, $x = $x + 3 can be shortened to $x += 3. With PHP being a web focused language, the ?? operator is often used to check something's existence like $username = $_GET['user'] ?? 'nobody'; However, because variable names are often much longer than $username, the use of ?? for self assignment creates repeated code, like $this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? ‘value’;. It is also intuitive to use combined assignment operator null coalesce checking for self assignment.

Proposal

Despite ?? coalescing operator being a comparison operator, coalesce equal or ??=operator is an assignment operator. If the left parameter is null, assigns the value of the right paramater to the left one. If the value is not null, nothing is made.

// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';

The value of right-hand parameter is copied if the left-hand parameter is null.

Proposed PHP Version(s)

This proposed for the next PHP 7.x.

Patches and Tests

A pull request with a working implementation, targeting master, is here: https://github.com/php/php-src/pull/1795

Vote

As this is a language change, a 2/3 majority is required. A straight Yes/No vote is being held.

Voting started at 2016/03/24 16:08 and will be closed at 2016/04/02.

Approve Equal Null Coalesce Operator RFC and merge patch into master?
Real name Yes No
aharvey Image 
ajf  Image
brianlmoon Image 
colinodell Image 
daverandom Image 
davey Image 
dmitry Image 
dragoonis Image 
francois Image 
frozenfire Image 
galvao Image 
guilhermeblanco Image 
jwage Image 
klaussilveira Image 
krakjoe  Image
laruence  Image
lcobucci Image 
leigh Image 
levim  Image
lstrojny Image 
malukenho Image 
marcio Image 
mariano Image 
mbeccati Image 
mcmic Image 
mrook Image 
ocramius Image 
patrickallaert Image 
pauloelr Image 
pierrick Image 
pollita Image 
ralphschindler Image 
stas Image 
svpernova09 Image 
toby Image 
tpunt Image 
trowski Image 
weierophinney Image 
yohgaki Image 
zeev Image 
zimt Image 
Final result: 37 4
This poll has been closed.

References

Rejected Features

Keep this updated with features that were discussed on the mail lists.

rfc/null_coalesce_equal_operator.txt · Last modified: by nikic

Image