Re: [RFC] Transform exit() from a language construct into a standard function

From: 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. 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.

« previous php.internals (#123441) next »