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
rfc:get_class_disallow_null_parameter [2016/08/13 23:24] danackrfc:get_class_disallow_null_parameter [2018/03/01 23:26] (current) – RFC was implemented in PHP 7.2 carusogabriel
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: Implemented (in PHP 7.2)
   * 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.1471130661.txt.gz · Last modified: 2017/09/22 13:28 (external edit)