Re: [IDEA] allow extending enum
| From: | Tim Düsterhus | Date: | Wed, 29 Mar 2023 09:55:59 +0000 |
| Subject: | Re: [IDEA] allow extending enum | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-119764@lists.php.net to get a copy of this message | ||
Hi
On 3/29/23 11:42, Sebastian Bergmann wrote:
Am 29.03.2023 um 11:31 schrieb Rokas Šleinius:And to give a specific example from PHP 8.3: As part of the Randomizer additions RFC (https://wiki.php.net/rfc/randomizer_additions), PHP 8.3 got its first "natively included" enum (\Random\IntervalBoundary). This enum works together with the new Randomizer::getFloat() method to specify if the given min and max value may be returned or not. The Randomizer::getFloat() method internally includes switch statement that chooses the implementation based on the IntervalBoundary value given. If a user would be able to extend the IntervalBoundary enum, the method would not be able to make sense of it. The IntervalBoundary enum completely enumerates all four possible combinations for the two possible states for each of the two boundaries (2*2 = 4). By definition there is no other valid value. Best regards Tim DüsterhusI wouldn't say removing the final attribute from enums actually "breaks" any functionality.I am with Marco on this: removing the "finality" from enum would be a major backward compatiblity break as it breaks a fundamental assumption about enums.