Re: [RFC] Context Managers
| From: | Tim Düsterhus | Date: | Tue, 16 Dec 2025 09:07:05 +0000 |
| Subject: | Re: [RFC] Context Managers | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-129618@lists.php.net to get a copy of this message | ||
Hi
Am 2025-12-16 09:08, schrieb Rowan Tommins [IMSoP]:
That definition doesn't make sense to me. An iterator that only ever emits a single value is not actually iterating anything and it would never occur me to interpret it like that. As I had also noted in my reply https://news-web.php.net/php.internals/129582, it is absolutely magic to me thatI 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).This is the way to read the "as" syntax, yes; as I've said in a few places, a Context Manager is like an iterator that goes around once.
break; would target using().
My favourite among my own suggestions was "using($cValue from new CM())", but Larry didn't like the reversed order. I also suggested 'using(new CM() for $cValue)", but I don't think that's as clear.FWIW: Using
from would be somewhat consistent with yield from. Using for would effectively invent another meaning for an existing keyword, something that folks disliked for use() as the initial block scoping keyword.
Best regards
Tim Düsterhus