Hi internals,
I'd like to start the discussion for a new RFC about removing the
prohibition on __debugInfo() methods on enums.
- RFC: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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
Hi internals,
I'd like to start the discussion for a new RFC about removing the
prohibition on __debugInfo() methods on enums.
- RFC: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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
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
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: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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.
- RFC: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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.
- RFC: https://wiki.php.net/rfc/debugable-enums
- Implementation: https://github.com/php/php-src/pull/21425
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