Re: [RFC] Context Managers

From: Date: Tue, 16 Dec 2025 05:55:39 +0000
Subject: Re: [RFC] Context Managers
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-129613@lists.php.net to get a copy of this message
> On Dec 16, 2025, at 1:19 AM, Larry Garfield <larry@garfieldtech.com> wrote: > > On Thu, Dec 4, 2025, at 10:46 AM, Larry Garfield wrote: >>> 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 > > Since the only feedback on what to use for "as" was that => makes sense, we have > changed the RFC to use => instead. So the new syntax is > > using (new CM() => $cVar) { > // Do stuff here. > } > > --Larry Garfield I’d ask you to get back to “use” keyword, despite of it’s in use in Laravel or somewhere else. As a developer I cannot even imagine what “use” could mean in web frameworks context, I hope it could have a better name and at the same time we can advise to use namespaces if you don’t want to get something broken after upgrading language. Just my 5 cents. -- Best regards, Dmitrii Derepko. @xepozz

« previous php.internals (#129613) next »