Re: [RFC] Context Managers

From: Date: Tue, 16 Dec 2025 04:08:33 +0000
Subject: Re: [RFC] Context Managers
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-129612@lists.php.net to get a copy of this message
> On Dec 15, 2025, at 18:21, Deleu <deleugyn@gmail.com> wrote: > > On Mon, 15 Dec 2025 at 20:01 Ben Ramsey <ben@benramsey.com> wrote: >>> >>> >>> 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. >>> } >>> >>> Going to be controversial here, but this is confusing, because it operates in the exact >>> opposite of every other usage of => we have. With associative arrays, the left is assigned to the >>> expression on the right; with arrow functions, the return value is the expression on the right; with >>> match, the expression on the right is returned. >>> >>> This is going to be easy to get wrong. >> >> >> I agree with Matthew. >> >> I think it makes more sense to reverse them, like this: >> >> using ($cVar => new CM()) { >> // Do stuff here. >> } >> >> I think it’s still clear what this is doing, when reading it. >> >> Cheers, >> Ben > > I also agree with Matthew but the reversed proposed here looks very very awkward to me. I think > the most natural thing is the “as” but I may have missed the discussion on why it had to be > changed. > > Thinking of foreach ($array as $value), an item from the array (left) is assigned to $value > (right). That seems symmetrical to using (new Manager as $manager) where the instance (left) is > assigned to the variable (right). Also when using aliases on the top of the file “use Foo as > Bar;” as is also assigning the left to the right. This argument makes sense to me (i.e., using as instead of =>). I’ll go back through the thread to find the arguments against using as, to understand why it changed to =>. Cheers, Ben

« previous php.internals (#129612) next »