Re: RFC: Support Closures in constant expressions

From: Date: Thu, 31 Oct 2024 14:12:38 +0000
Subject: Re: RFC: Support Closures in constant expressions
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-125885@lists.php.net to get a copy of this message
On Thursday, 31 October 2024 at 07:22, Rob Landers <rob@bottled.codes> wrote: > To be honest, I thought it was a rhetorical question since the example is a runtime error > (passing string to a function that takes an array), but on this note, we already know how it should > behave: https://3v4l.org/RC6b3 because, as you said, it is captured > by value. In theory, to support this, we would probably need “late binding constants” or > constants that are executed just before any userland code is run. Similar to just emulating it > yourself: https://3v4l.org/PMY4W > > IMHO, the rules around constant expressions are not sound and feel arbitrary when you run into > them. They are too easy to work around (though cumbersome) and the code still works, which seems to > prove their arbitrary nature. define() does not produce "true" constants and has always allowed to define constants at run-time where there is more information available. const expressions have *always* been about determining and defining constants at compile time so they can be put in SHM. Which is why the const keyword exist. (and yes I know define() expression that are const expression are "true compile time constants") Best regards, Gina P. Banyard >

« previous php.internals (#125885) next »