rfc:treat_enum_instances_as_values
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:treat_enum_instances_as_values [2023/04/28 21:46] – suitespacernd | rfc:treat_enum_instances_as_values [2023/04/29 11:04] (current) – typo correction suggested by internals suitespacernd | ||
---|---|---|---|
Line 11: | Line 11: | ||
This RFC proposes to allow the use of enum instances as array keys in PHP. More specifically, | This RFC proposes to allow the use of enum instances as array keys in PHP. More specifically, | ||
- | This change aims to enhance the usability and consistency of enums in PHP by treating enum instances as symbols of their respective values - especially in the context of array keys. This will allow large amounts of existing code in various C-style languages to be compatible with PHP usage without affecting current projects. Further, this enables | + | This change aims to enhance the usability and consistency of enums in PHP by treating enum instances as symbols of their respective values - especially in the context of array keys. This will allow large amounts of existing code in various C-style languages to be compatible with PHP usage without affecting current projects. |
+ | |||
+ | Further, this proposal provides | ||
Line 39: | Line 41: | ||
| | ||
1 => ' | 1 => ' | ||
- | | + | 2 => ' |
3 => ' | 3 => ' | ||
]; | ]; | ||
Line 90: | Line 92: | ||
Could be a toggle if community desired | Could be a toggle if community desired | ||
- | ===== Open Issues ===== | ||
- | Make sure there are no open issues when the vote starts! | ||
- | |||
- | ===== Unaffected PHP Functionality ===== | ||
- | List existing areas/ | ||
- | |||
- | This helps avoid any ambiguity, shows that you have thought deeply about the RFC's impact, and helps reduces mail list noise. | ||
===== Future Scope ===== | ===== Future Scope ===== | ||
Line 118: | Line 113: | ||
public function offsetGet(Month $which){ | public function offsetGet(Month $which){ | ||
+ | //... | ||
+ | } | ||
+ | |||
+ | //... | ||
+ | } | ||
+ | class YourType implements ArrayAccess | ||
+ | //... | ||
+ | |||
+ | public function offsetGet(mixed $which){ | ||
//... | //... | ||
} | } | ||
Line 127: | Line 131: | ||
| | ||
+ | | ||
$x = $myobj[Color:: | $x = $myobj[Color:: | ||
+ | $y = $yourobj[Color:: | ||
Such a roadmap finally enables users to user to simply use match($this) and other userland syntactic sugar to simulate object keys. This gap can be further reduced and optimized from there. | Such a roadmap finally enables users to user to simply use match($this) and other userland syntactic sugar to simulate object keys. This gap can be further reduced and optimized from there. | ||
Line 133: | Line 139: | ||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== | ||
- | Include these so readers know where you are heading and can discuss the proposed voting options. | + | A two-thirds majority is required for this proposal to be accepted. |
===== Patches and Tests ===== | ===== Patches and Tests ===== | ||
Line 139: | Line 145: | ||
===== Implementation ===== | ===== Implementation ===== | ||
- | Author' | + | Author' |
rfc/treat_enum_instances_as_values.1682718378.txt.gz · Last modified: 2023/04/28 21:46 by suitespacernd