rfc:instanceof_improvements
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:instanceof_improvements [2021/03/08 16:04] – ++ maxsem | rfc:instanceof_improvements [2021/03/09 09:51] – maxsem | ||
---|---|---|---|
Line 7: | Line 7: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | As currently implemented, | + | As currently implemented, |
<code php> | <code php> | ||
var_dump(new MyClass instanceof MyClass); // true | var_dump(new MyClass instanceof MyClass); // true | ||
Line 20: | Line 20: | ||
Make '' | Make '' | ||
<code php> | <code php> | ||
- | var_dump(' | + | var_dump(' |
- | var_dump(' | + | var_dump(' |
$type = ' | $type = ' | ||
var_dump(' | var_dump(' | ||
</ | </ | ||
+ | |||
+ | ==== Types to support ==== | ||
+ | This proposal covers only concrete scalar types '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | All attempts to check against these types would evaluate to '' | ||
+ | |||
+ | * '' | ||
+ | |||
+ | ==== Legacy type aliases ==== | ||
+ | There are several legacy types, supported only for typecasts: '' | ||
+ | |||
+ | ==== Constant expressions on the left hand side ==== | ||
+ | The current implementation has a shortcut where if there is a constant expression to the left of '' | ||
+ | * In Java, a variable is required on the left side of '' | ||
+ | * In C#, constant expressions to the left of '' | ||
+ | * None of these support type names as strings, so the latter use case has no direct analogs. | ||
+ | |||
+ | I can see two possibilities why such constructs might appear in code: | ||
+ | * An clueless developer trying to achieve with '' | ||
+ | * A code generator went astray and generates something dubious. | ||
+ | Considering this, I don't think that adding support for constant expressions on LHS would do our end users any good. I propose to continue shortcutting such cases to false and additionally let the developers know they' | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== |
rfc/instanceof_improvements.txt · Last modified: 2022/04/18 10:51 by ilutov