Re: [RFC] [Discussion] Stringable Enums
| From: | Rowan Tommins [IMSoP] | Date: | Thu, 04 Dec 2025 08:01:27 +0000 |
| Subject: | Re: [RFC] [Discussion] Stringable Enums | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-129541@lists.php.net to get a copy of this message | ||
On 4 December 2025 04:50:57 GMT, Daniel Scherzer <daniel.e.scherzer@gmail.com> wrote:
>Hi internals,
>
>I'd like to start the discussion for a new RFC about removing the
>prohibition on
__toString() methods on enums.
>
>* RFC: https://wiki.php.net/rfc/stringable-enums
>* Implementation: https://github.com/php/php-src/pull/20415
My first instinct was that this was dragging up a discussion we've had lots of times, but your
examples make clear that you are *not* just talking about converting enums to their backing value.
On the other hand, that does make me wonder: in what way is (string)$foo clearer than
$foo->toString() for those use cases? In my experience, it just makes the functionality less
discoverable - people don't think to try (string)$exception or (string)$simpleXmlNode, so miss
that those have specific behaviour.
And is it even a good name for those methods? In the date-time package, for instance, it would be
better named toEnglishName() or getFullEnglishName(), as its docblock explicitly says. In the
framework code, it seems to be used for a property called $displayValue, so the obvious name for the
method would be getDisplayValue().
Regards,
Rowan Tommins
[IMSoP]