rfc:get_class_disallow_null_parameter

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
Last revisionBoth sides next revision
rfc:get_class_disallow_null_parameter [2016/08/13 23:24] danackrfc:get_class_disallow_null_parameter [2017/09/22 13:28] – external edit 127.0.0.1
Line 1: Line 1:
 ====== PHP RFC: get_class() disallow null parameter ====== ====== PHP RFC: get_class() disallow null parameter ======
-  * Version: 0.9+  * Version: 1.0
   * Date: 2016-08-12   * Date: 2016-08-12
   * Author: Danack   * Author: Danack
-  * Status: Draft +  * Status: Accepted
   * First Published at: https://wiki.php.net/rfc/get_class_disallow_null_parameter   * First Published at: https://wiki.php.net/rfc/get_class_disallow_null_parameter
  
Line 26: Line 26:
  
 If $result contains null, the output will be of the class context where get_class() was called from, in this case "Foo". If $result contains null, the output will be of the class context where get_class() was called from, in this case "Foo".
 +
 +
 +This feature violates the [[https://en.wikipedia.org/wiki/Principle_of_least_astonishment|Principle of least astonishment]]: "if a necessary feature has a high astonishment factor, it may be necessary to redesign the feature."
 +
  
 ===== Proposal ===== ===== Proposal =====
  
-Disallow null being passed to the function as a valid parameter.+Disallow null being passed to the function as a valid parameter. If get_class() is called with null as the parameter, a warning will be emitted: 
 + 
 +<code> 
 +Warning: get_class() expects parameter 1 to be object, null given in %s on line %d 
 +</code>
  
 I.e. the valid ways to call the function will be: I.e. the valid ways to call the function will be:
Line 53: Line 61:
 <code php> <code php>
 if ($some_value_that_may_be_null === null) { if ($some_value_that_may_be_null === null) {
-    $x = null;+    $x = get_class();
 } }
 else { else {
Line 63: Line 71:
 7.2 7.2
  
-===== Proposed Voting Choices =====+===== Voting ===== 
 + 
 +Should the get_class() function be changed to disallow null being passed as a parameter? As it is not a language or syntax change, the vote will pass if 50%+1 vote yes.
  
-The voting question will be "Should the get_class() function be changed to disallow null being passed as a parameter?with yes/no being the options. As it is not a language or syntax change, the vote will pass if 50%+1 vote yes.+<doodle title="get_class() disallow null parameter" auth="Danack" voteType="single" closed="true"> 
 +   * Yes 
 +   * No 
 +</doodle>
  
 +Voting ended on the 8th October 2016 9pm UTC
  
 ===== null vs default param ===== ===== null vs default param =====
Line 94: Line 108:
 ===== Patches and Tests ===== ===== Patches and Tests =====
  
-https://github.com/Danack/php-src/tree/get_class_rfc+https://github.com/php/php-src/pull/2082
  
 ===== Implementation ===== ===== Implementation =====
 After the project is implemented, this section should contain  After the project is implemented, this section should contain 
-  - the version(s) it was merged to +  - This was merged for PHP 7.2 
-  - a link to the git commit(s) +  - https://github.com/php/php-src/pull/2082/commits/86aa1c784d3b584e6d0c235870a882c8fd169a74 
-  - a link to the PHP manual entry for the feature+  - https://secure.php.net/manual/en/function.get-class.php#refsect1-function.get-class-changelog
rfc/get_class_disallow_null_parameter.txt · Last modified: 2018/03/01 23:26 by carusogabriel