rfc:get_debug_type

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
Next revisionBoth sides next revision
rfc:get_debug_type [2020/02/17 09:42] marandallrfc:get_debug_type [2020/02/29 23:11] nikic
Line 9: Line 9:
 This RFC proposes to add a new function get_debug_type that will return the given type of a variable. This RFC proposes to add a new function get_debug_type that will return the given type of a variable.
  
-This function would differ from gettype in that it would return native type names, e.g. "int" rather than "integer" and would automatically resolve class names.+This is to replace the following pattern, which may be used to generate debugging messages when dealing with types which cannot be handled by existing PHP runtime checking based on parameter types, such as those coming from an array. 
 + 
 +<code php> 
 +$bar = $arr['key']; 
 +if (!($bar instanceof Foo)) {  
 +  throw new TypeError('Expected ' . Foo::class . ' got ' . (is_object($bar) ? get_class($bar) : gettype($bar))); 
 +
 + 
 +$bar->someFooMethod(); 
 +</code> 
 + 
 +This function would differ from gettype in that it would return native type names, e.g. "int" rather than "integer" and would automatically resolve class names. The following table shows what ''get_debug_type()'' returns for different values, and what ''gettype()'' returns for the same value (if it is different): 
 + 
 +^ Value   ^ get_debug_type() ^ gettype() ^ 
 +| 0       | int | integer | 
 +| 0.1     | float | double | 
 +| true    | bool | boolean | 
 +| false   | bool | boolean | 
 +| "hello" | string | | 
 +| []      | array  | | 
 +| null    | null | NULL | 
 +| A class with name "Foo\Bar" | Foo\Bar  | object | 
 +| An anonymous class | class@anonymous   | object | 
 +| A resource         | resource (xxx)    | resource | 
 +| A closed resource  | resource (closed) | | 
  
-  * 0 => int   
-  * 0.1 => float   
-  * true => bool   
-  * false => bool   
-  * "hello" => string   
-  * [] => array   
-  * null => null   
-  * A class with name "Foo\Bar" => foo\bar   
-  * An anonymous class => class@anonymous   
-  * A resource => resource (xxx)   
-  * A closed resource => resource (closed)   
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
rfc/get_debug_type.txt · Last modified: 2020/08/01 23:41 by carusogabriel