Hi internals,
I’d like to start the discussion for a new RFC about removing the prohibition on __debugInfo() methods on enums.
This is a replacement of my earlier RFC to allow __toString() based on the feedback in that discussion, see https://news-web.php.net/php.internals/129540 .
Thanks,
-Daniel
Crell
March 13, 2026, 2:54pm
2
On Thu, Mar 12, 2026, at 7:05 PM, Daniel Scherzer wrote:
Hi internals,
I'd like to start the discussion for a new RFC about removing the
prohibition on __debugInfo() methods on enums.
* RFC: PHP: rfc:debugable-enums
* Implementation: [RFC] Allow __debugInfo() on enums by DanielEScherzer · Pull Request #21425 · php/php-src · GitHub
This is a replacement of my earlier RFC to allow __toString() based on
the feedback in that discussion, see
php.internals: [RFC] [Discussion] Stringable Enums .
Thanks,
-Daniel
I'm not entirely sure this has much value, but it also seems to not have much downside. The main argument I could see for holding off is that whenever it is we get to ADTs, we may want a more complex default implementation. But that would still presumably allow being overridden, like any other class, so it doesn't seem like a landmine to me. This doesn't have the same semantic issues that __toString() has (and have been discussed elsewhere).
--Larry Garfield
ilutov
March 13, 2026, 7:42pm
3
Hi Daniel
On Fri, Mar 13, 2026 at 1:06 AM Daniel Scherzer
<daniel.e.scherzer@gmail.com> wrote:
I'd like to start the discussion for a new RFC about removing the prohibition on __debugInfo() methods on enums.
* RFC: PHP: rfc:debugable-enums
* Implementation: [RFC] Allow __debugInfo() on enums by DanielEScherzer · Pull Request #21425 · php/php-src · GitHub
The RFC currently only mentions:
var_dump(Foo::Bar); // produces an array with "Bar is a case of the Foo enum"
But it would be good for it to spell out the full output for the
examples. From the implementation, I can see:
object(Foo)#%d (1) {
[0]=>
string(14) "Foo::Bar = Baz"
}
I think the enum(Foo::Bar) header should be preserved. If the user
wants to print some ancillary data for some reason, I wouldn't object
to that.
Ilija
On Sun, Mar 15, 2026 at 11:01 AM Ilija Tovilo <tovilo.ilija@gmail.com > wrote:
Hi Daniel
On Fri, Mar 13, 2026 at 1:06 AM Daniel Scherzer
<daniel.e.scherzer@gmail.com > wrote:
I’d like to start the discussion for a new RFC about removing the prohibition on __debugInfo() methods on enums.
The RFC currently only mentions:
var_dump(Foo::Bar); // produces an array with “Bar is a case of the Foo enum”
But it would be good for it to spell out the full output for the
examples.
Done, examples now show the full output
From the implementation, I can see:
object(Foo)#%d (1) {
[0]=>
string(14) “Foo::Bar = Baz”
}
I think the enum(Foo::Bar) header should be preserved. If the user
wants to print some ancillary data for some reason, I wouldn’t object
to that.
Done, the header is now preserved. I also removed the object handler identifier, which I don’t think is as needed with enums.
Based on my understanding of the RFC policy (https://github.com/php/policies/blob/main/feature-proposals.rst ), this qualifies as a major change, so there is now a cooldown period of 14 days before the earliest that a vote could start.
-Daniel
Hi
Am 2026-03-13 01:05, schrieb Daniel Scherzer:
* RFC: PHP: rfc:debugable-enums
* Implementation: [RFC] Allow __debugInfo() on enums by DanielEScherzer · Pull Request #21425 · php/php-src · GitHub
Thank you. Similarly to Larry, I don't see much reason in favor, but also no reason against allowing `__debugInfo()`.
I noticed that the title of the voting widget did not render properly (it showed “Default title”). It seems the `<php>` tags were at fault. I have removed the tags and also added a “Primary Vote requiring a 2/3 majority to accept the RFC:” note as required by policy and shown in the template.
Best regards
Tim Düsterhus
On Thu, Mar 12, 2026 at 5:05 PM 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 __debugInfo() methods on enums.
This is a replacement of my earlier RFC to allow __toString() based on the feedback in that discussion, see https://news-web.php.net/php.internals/129540 .
This email is a notice that I intend to open the vote on this RFC in the next few days, barring any unexpected developments.
-Daniel