On 2024.05.08 16:40, Gina P. Banyard wrote:
Hello Internals,
I would like to formally propose my idea for exit() as a function brought up to
the list on 2024-02-24 [1] with the following RFC:
https://wiki.php.net/rfc/exit-as-function
There have been some slight tweaks to the implementation, namely that the transformation
from a "constant" to a function is done at compile time and we do not hook into
the behaviour of constants any longer.
Let me know what you think.
Best regards,
Gina P. Banyard
[1] https://externals.io/message/122483
I don't quite get the reasoning behind this change. `exit` behavior is
not consistent with functions because it is not a function. But it is
consistent with other constructs like `echo`. Or am I wrong? I'm all for
stricter typing but not at a cost of reliability. `exit` IMO should
always terminate script, no exceptions (no pun intended :)). Otherwise,
it may have security implications in some codebases, as Saki pointed
out. So I'd rather go the other way and have it error fatally like for
example `break` does when passed non-integers. And on the same note
maybe syntax could be improved to *not* require parentheses when passing
the code (so `exit 0;` would be valid code) since this seems to be the
cause of the confusion.
Just my 2c.
p.s. In B/C table you should mention that passing Stringable objects
will throw TypeError when `strict_types` is enabled.