On Tue, Nov 4, 2025, at 2:13 PM, Larry Garfield wrote:
> Arnaud and I would like to present another RFC for consideration: 
> Context Managers.
>
> https://wiki.php.net/rfc/context-managers
>
> You'll probably note that is very similar to the recent proposal from 
> Tim and Seifeddine.  Both proposals grew out of casual discussion 
> several months ago; I don't believe either team was aware that the 
> other was also actively working on such a proposal, so we now have two. 
>  C'est la vie. :-)
>
> Naturally, Arnaud and I feel that our approach is the better one.  In 
> particular, as Arnaud noted in an earlier reply, __destruct() is 
> unreliable if timing matters.  It also does not allow differentiating 
> between a success or failure exit condition, which for many use cases 
> is absolutely mandatory (as shown in the examples in the context 
> manager RFC).
>
> The Context Manager proposal is a near direct port of Python's 
> approach, which is generally very well thought-out.  However, there are 
> a few open questions as listed in the RFC that we are seeking feedback 
> on.
>
> Discuss. :-)

More updates to Context Managers:

* We have added "masking" for the context variable, using essentially the same 
technique as the block scope RFC.
* We have added support for `try using`, as a shorthand for when you want to 
wrap a try-catch-finally around a using statement anyway.

More details of both are in the RFC.

As no one seems to have a strong opinion on `continue`, we will most likely 
proceed with the current approach of matching `switch` behavior.

There doesn't seem to be much interest in making `using` an expression, which I 
find unfortunate, but that means we'll probably drop that.  Fortunately it is 
probably possible to change in the future if the need arises (the way `throw` 
was changed).

--Larry Garfield

Reply via email to