> On Aug 27, 2024, at 10:14, Rowan Tommins [IMSoP] <[email protected]> wrote:
>
> The only expressions that are in some sense "safe" are those that can apply equally
> to any possible type that the function could in future set as the default. In theory, that includes
> a match statement with an arm of "default => default", e.g.
>
> json_encode($data, default, match(gettype(default)) { 'int' => default |
> JSON_PRETTY_PRINT, default => default });
>
> Apart from being incredibly hard to read, that's not even useful: the aim is to always
> enable pretty printing, but the result is "enable pretty print, unless the type of the default
> happens to change".
I'm not sure this could even work at all. The "default" parameter to gettype()
isn't the default value of the third parameter to json_encode(). It's the default value of
the first parameter to gettype(). Which would probably fail, since gettype()'s first parameter
doesn't have a default. I suppose this could be solved by specifying an offset or label (e.g.
as with continue 2
in a nested loop), but that would just make it even harder to read.
-John