rfc:variadic_empty

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:variadic_empty [2015/02/25 18:06] tpuntrfc:variadic_empty [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 3: Line 3:
   * Date: 2015-02-20   * Date: 2015-02-20
   * Author: Thomas Punt, tpunt@hotmail.co.uk   * Author: Thomas Punt, tpunt@hotmail.co.uk
-  * Status: Under Discussion+  * Status: Declined
   * First Published at: http://wiki.php.net/rfc/variadic_empty   * First Published at: http://wiki.php.net/rfc/variadic_empty
  
Line 26: Line 26:
 The proposal is to change ''empty()'' so that it can accept multiple arguments. This will enable developers to write more compact code when checking for the emptiness of multiple expressions. The proposal is to change ''empty()'' so that it can accept multiple arguments. This will enable developers to write more compact code when checking for the emptiness of multiple expressions.
  
-As the above snippet demonstrates, the semantics of a variadic ''empty()'' should be the equivalent to logically OR'ing together multiple ''empty()'' invocations. Thus, if //any// arguments passed into ''empty()'' are considered falsy, then **true** will be returned - otherwise, **false** is returned. This behaviour is the most logical (given ''empty()''s falsy semantics) and seems to be the most prevalent usage of multiple empty checks in a condition, therefore benefitting the most end users.+As the above snippet demonstrates, the semantics of a variadic ''empty()'' should be the equivalent to logically OR'ing together multiple ''empty()'' invocations. Thus, if //any// arguments passed into ''empty()'' are considered falsy, then **true** will be returned; if //no// arguments are considered emptythen **false** is returned. This behaviour is the most logical (given ''empty()'''s falsy semantics) and seems to be the most prevalent usage of multiple empty checks in user-land code (therefore being the most beneficial behaviour).
  
 ===== Justification ===== ===== Justification =====
Line 32: Line 32:
 In PHP, it is not uncommon to see conditionals consisting of multiple ''empty()'' invocations. This is evident by simply browsing through some popular open source projects: In PHP, it is not uncommon to see conditionals consisting of multiple ''empty()'' invocations. This is evident by simply browsing through some popular open source projects:
  
-WordPress (( https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/template.php#L1963 )):+WordPress (( https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/template.php#L2007 )):
 <code php> <code php>
 if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) ) if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
Line 53: Line 53:
 And so on... And so on...
  
-So this seems like quite a common need for users, and one that cannot be emulated in user-land code because of ''empty()'''s behaviour of suppressing undefined variables.+So this seems like quite a common need for users, and one that cannot be emulated in user-land code because of ''empty()'''s behaviour of suppressing undefined variable errors.
  
-Also, this change will make ''empty()'' more inline with the not-too-dissimilar ''isset()'', which is good for the [[http://en.wikipedia.org/wiki/Principle_of_least_astonishment|Principle of Least Astonishment]] (mainly aimed at neophyte developers).+This change will also make ''empty()'' more inline with the not-too-dissimilar ''isset()'', which is good for [[http://en.wikipedia.org/wiki/Principle_of_least_astonishment|POLA]].
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 66: Line 66:
 The current functionality of ''empty()'' will be completely preserved. The current functionality of ''empty()'' will be completely preserved.
  
-===== Proposed Voting Choices ===== +===== Vote ===== 
-Because this is a language change, a 2/3 majority is required.+Because this is a language change, a 2/3 majority is required. It is a simple yes/no vote on whether ''empty()'' should be made a variadic. 
 + 
 +<doodle title="Make empty() a Variadic" auth="tpunt" voteType="single" closed="true"> 
 +   * Yes 
 +   * No 
 +</doodle> 
 + 
 +Voting starts on 2015-03-07 and ends on 2015-03-21.
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
  
 PR: https://github.com/php/php-src/pull/1109 PR: https://github.com/php/php-src/pull/1109
rfc/variadic_empty.1424887617.txt.gz · Last modified: 2017/09/22 13:28 (external edit)