Re: [RFC] [Discussion] Stringable Enums

From: Date: Fri, 05 Dec 2025 08:43:38 +0000
Subject: Re: [RFC] [Discussion] Stringable Enums
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-129560@lists.php.net to get a copy of this message
On Fri, Dec 5, 2025, 02:42 Bob Weinand <bobwei9@hotmail.com> wrote: > > Hey Larry, > > On 5.12.2025 01:21:43, Larry Garfield wrote: > > I've long argued against allowing __toString() for reasons others have already covered, so > I won't bother repeating it. But off hand I don't see why __debugInfo() would cause a > problem. I am not sure it's useful before ADTs happen, but I don't think it would cause > any harm? > > I found to semi-commonly (the ergonomics of querying are bad) add attributes to enum cases. A > __debugInfo() handler could provide information about all attached metadata. > > > Bob Slight correction: not metadata, we already have it in the form of the entire internal object state. It's full of noise, the user rarely wants that. __debugInfo() could contain a user-readable representation of the important parts of an object. For example dumping a Carbon object: Illuminate\Support\Carbon 2025-12-05 09:38:17.634246 Europe/Berlin (+01:00) vs Illuminate\Support\Carbon @1764923897 {#304 #endOfTime: false #startOfTime: false #constructedObjectId: "00000000000001300000000000000000" #localMonthsOverflow: null #localYearsOverflow: null #localStrictModeEnabled: null #localHumanDiffOptions: null #localToStringFormat: null #localSerializer: null #localMacros: null #localGenericMacros: null #localFormatFunction: null #localTranslator: null #dumpProperties: array:3 [ 0 => "date" 1 => "timezone_type" 2 => "timezone" ] #dumpLocale: null #dumpDateProperties: null }

« previous php.internals (#129560) next »