Re: [RFC] [VOTE] Transform exit() from a languageconstructinto a standard function
| From: | Christoph M. Becker | Date: | Mon, 05 Aug 2024 17:30:32 +0000 |
| Subject: | Re: [RFC] [VOTE] Transform exit() from a languageconstructinto a standard function | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-124783@lists.php.net to get a copy of this message | ||
On 05.08.2024 at 18:52, Tim Düsterhus wrote:
> On 8/5/24 14:52, Christoph M. Becker wrote:
>
>> Hmm, so far I only had skimmed the RFC and the related discussions, but
>> now I checked out the suggested implementation[1]. Then I tried to
>> build with PECL/uopz, and of course that failed because ZEND_EXIT is no
>> longer there. Okay, quickly drop that usage; build succeeds. Then I ran
>>
>> <?php
>> uopz_set_return("exit", function () {echo "hello";}, true);
>> exit;
>> ?>
>>
>> And got
>>
>> hello
>>
>> Previously, no output was echoed. While that seems to be fixable in
>
> Frankly from a userland developer PoV this looks entirely correct: If I
> override the
exit() function, then I expect the
> exit() function to
> be overridden.
I should have clarified, that "fixing" means to restore the expected
behavior of uopz, namely that accidential attempts to override exit with
uopz_set_return() were silently ignored, but unless uopz.exit=1 is
set, or uopz_allow_exit(true) is called, exit is ignored. Especially
the latter may be relied upon by tests for legacy code.
Christoph