Re: [RFC] Transform exit() from a language construct into a standard function
| From: | Daikaras | Date: | Tue, 28 May 2024 07:02:22 +0000 |
| Subject: | Re: [RFC] Transform exit() from a language construct into a standard function | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-123441@lists.php.net to get a copy of this message | ||
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.Just my 2c. p.s. In B/C table you should mention that passing Stringable objects will throw TypeError whenexitbehavior is not consistent with functions because it is not a function. But it is consistent with other constructs likeecho. Or am I wrong? I'm all for stricter typing but not at a cost of reliability.exitIMO 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 examplebreakdoes when passed non-integers. And on the same note maybe syntax could be improved to *not* require parentheses when passing the code (soexit 0;would be valid code) since this seems to be the cause of the confusion.
strict_types is enabled.