Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:130787 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id B3DE91A00BC for ; Wed, 6 May 2026 20:15:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1778098551; bh=GNo3vcXRu8Hn0zf6hkFRH/oYqnI1dr4v+pBhFGec6zU=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=XbcSKODMBQ77wj+BBkIpKqXRmMEjl671etrWeywudR8lX6sDTSEDRnylw4J7GpgrO 4WB9Jj3KuWUueg6pb0ZjqlRUQ0n/Tlllm5DGTZ62eLYV+bPeJ1Ix4HE7voDZlARRZU LqNx7Rgb4mDvMJxe6yb1t5aGI5pwaOwlwhfroVDlaARXBPNbsGi28NJApHh2JTavWY DCla/de949Yveks2/Pir0pL8EPNZprO6Ri3qpSb2i63AYI3Py2VcZLNTopYQoEX2E9 +rkrkge9OlS8B+hZ01sAtjlsTByZME+6fzLiuGre/3pzx0Q6hV0YvfI4MWVm4nMjwL 3xtpKSgEx0sOw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id C1288180087 for ; Wed, 6 May 2026 20:15:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from SVZP279CU002.outbound.protection.outlook.com (mail-norwaywestazolkn19010011.outbound.protection.outlook.com [52.103.52.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 6 May 2026 20:15:50 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ANV5Tg3ovzgb6kuyMx2sYXdERrLlzWufhEnCY0LEDX1XwVoXdcXQleDUFoYH6kpAJ8vLXbINId2UMNZduDVmpr5FfVXT05m0KyGquT+nPgv+gR0Zj6OSPc1JSoyT4hC5LvnEIfzmYL68OPhduJE0cI6PDtqT37k/yNlBO7UX+GacWPz4Mc9E2hU8ZlMUY1AhhsnIKUynDXwqiSN3WNLg7M1GJMYaeN4fU6bs3wHcrTSr6q287+02MwA0Cda356hX0mY6QjCLH4O9lGesQDab57LzuuYur4girFBef1fadxbGeEOmr37n/LgtF687B1i0hosakG5PKdlEKugH2rXcfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IOz7P7CH1/80ZMB5MSbgse5PVfT1HI3zoh0LlTS6F6w=; b=ZTVOpdKq2IVy8++bqN3f50PRe+DUclbag+TJY7KXPe8ftpmk1HkvxA949xejqXWFec7Ztz67x244QsVPJtZ3hLrrysGpXd+H5GJpJaxsq3MR+hDoMZ0T7CwKs2wSWsVtsLOK+fNqd2YGkee7YnpSmHjCL4+/sKwNDBalrfISvEQu3yz4Mn0T1B0WdCwF9rvoHeumc4pF9ikHWfRJTv2viqDD3IxBgp+YQvIhhhL4jVtWqTFab9fWXSAhfATqgzhWC6pkE+UhZ+eOxAjVrrlig0e4CJf6ue0NBu3esARMETyokQWAXxwCzSgdK+QTV7PPxdhL1icwHRECUHtU4d/DVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IOz7P7CH1/80ZMB5MSbgse5PVfT1HI3zoh0LlTS6F6w=; b=XvJf6Nf7UCmXk0VkGu/632LrrL/gZAY08FInRnOxxKI/SjYe7Gz6ilz+0a7f1KuBHdviugqjtXR4EeutRhTcxZfdzmhsAQIiu390gz7h7msQz4lkIXOZ+XtgCJHIfia8nNhwBP8vNc47ZQnkq0z/sGGmnBQUTfJ99e9YBefxgAC/VPqpS1k/vPDvEJeBFuBZlTdPRTst0d9wvw8ao0/wrpGML4DwLFcG6fSHq34SPzlP+Gz2lCTjfb8Z5Ai6Vk7g2K8pFe/w0Bd++1e9NEyM2IZiJdfvwp/YspsTGYfd7hflG8gkyjyaPICRUAqAtLemm3Hl7+7pVFzoAHBrm5D1wg== Received: from SVAP279MB0383.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:1f::6) by SV0P279MB0680.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:22::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Wed, 6 May 2026 20:15:42 +0000 Received: from SVAP279MB0383.NORP279.PROD.OUTLOOK.COM ([fe80::adb8:fa3a:bf3a:1780]) by SVAP279MB0383.NORP279.PROD.OUTLOOK.COM ([fe80::adb8:fa3a:bf3a:1780%3]) with mapi id 15.20.9891.008; Wed, 6 May 2026 20:15:42 +0000 To: Larry Garfield CC: php internals Subject: Re: [PHP-DEV] [RFC] Context Managers Thread-Topic: [PHP-DEV] [RFC] Context Managers Thread-Index: AQHcTcgg8gRQa6BniU+ZYT5M9VEmqbVUAMwAgAYcfYCAqHFTgA== Date: Wed, 6 May 2026 20:15:42 +0000 Message-ID: <49F275F4-4E72-4B9A-B6A5-68D7E57B1551@hotmail.com> References: In-Reply-To: Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3864.300.41.1.7) x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SVAP279MB0383:EE_|SV0P279MB0680:EE_ x-ms-office365-filtering-correlation-id: ffc9fb24-470a-488e-76cb-08deabac3fb1 x-microsoft-antispam: BCL:0;ARA:14566002|19110799012|37011999003|25031999004|461199028|51005399006|8060799015|8062599012|31061999003|15080799012|41001999006|10092599007|24021099003|10035399007|4302099013|3412199025|440099028|102099032|56899033|26104999009|1602099012|40105399003; x-microsoft-antispam-message-info: =?us-ascii?Q?d8aOcJrhzvj2oYzYyKARTPLGtWMagNWo+lhqr0jfZkWfo9KgtDKPlVZfsyuZ?= =?us-ascii?Q?nz1p51ew28nSzCvt3HYN9Ve2kKGpm1SqsaRf3eWz7r5fcEjg5TfJCF6oKpnO?= =?us-ascii?Q?mJmqkrCR89ogOFVAqFZN9P1s9dLBzNTrs8uoR8soi5Xokv7oqhr4R1biKbA/?= =?us-ascii?Q?4eooCaNE951tCR43V1lpqjneAp1x41L2/m5KDWeM2wC2i9YUuPNEOaHhJxuN?= =?us-ascii?Q?SYgSlhTMcsqtmmviphqm9HR7dlWh2t4dcgcyKVaAbntHEJiVEsA9duknhPvs?= =?us-ascii?Q?1NjoEkNha9W3n/xE1DwODkG0zFNpAPBwhZDvWdA+sKO1O9KJ6drsDVosUrdU?= =?us-ascii?Q?2k4SfTJi9AfeBTbZXa9nQgWDRM96iWo8MLEqCJp5OOPe7dFPyfXyv3DrX97J?= =?us-ascii?Q?GeGGg4xCJ7IPu3K2PSGSRGfWwQqgB2rhFSxJzIG+YhZOu/XsZoax9frMp625?= =?us-ascii?Q?CY/TTlei2IQuaOoczPrcI3DjupwL6j20oSP3Kak0uYJ9n931L659b62uXvR5?= =?us-ascii?Q?pd3TZIM7NPaljr6ehwoP1TLHu+iPVgy95zO3bbQp7249Deykr1qh1TDmKkqP?= =?us-ascii?Q?U+CljHpRxBZP+lHMQc0Z8cjoc1im+4f2hVo2TFQK+pmLJzJ27LjmpFbSl6Jo?= =?us-ascii?Q?DUxChEb8eJsWwW7SsU7W1twvWVuJE5Q59GSvzAg7U6OZNwZTIHjfp/073meb?= =?us-ascii?Q?mLTuPh0El0wAes8XEnWz43ViyiByCte4LZVhb1Wm9URxfIAZtye+wzhmUE7r?= =?us-ascii?Q?8nRCoI6sA5WWnvXwPou2O/WS9Nsq87ONaEkIckHAtOkUZyv2FdFqlJvAUTxN?= =?us-ascii?Q?mjjCkIqGIQqxKqBJ0PXRNVB6r9ls+yerUI/OhHjfFWrGa3k6SUsXM4Cnd9jt?= =?us-ascii?Q?QQN5ZSyVcEE0iiu1zzL9EBMI6d7jIaCxAGDjZU9NG2WvcFo18fpDSqkLMATD?= =?us-ascii?Q?5DNKNkiDD0MlwSrxFKRcjLv733olyf1I2BgZEvx1qlmSYRmvHTkW/XFc0Y7f?= =?us-ascii?Q?fR8FUFmVOdypBI9rtr7XoW/JXQK45f99JZjtlKoEHlDInzz9QiIkHzwrjnT7?= =?us-ascii?Q?gKQXXx/kfR+sUbnVpZGwCLE1PeI3gJLSMjnDgHl2dWmPbmAm1WCP3B4O9MiM?= =?us-ascii?Q?gbgNYti722qIAo5qZuH5GxnxENngr6VDeGzQyimmrVMAY4WKPxjpqRE=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?GDivSrtuOxmaj0EPj/eMVczIS1ba4hq/In9/ffL0E+CibpSw4ErRB4I09laZ?= =?us-ascii?Q?sTzjvvzUy0WbCW5IzObmkG+9ppkmrxouleLdGNmZBafwxYL37WIOs7Th++4/?= =?us-ascii?Q?mYmsD5MlEeq0odUPVw1V667OfIXZoUy22m5EsuSATQeW/byfnPuYy6g6lBwz?= =?us-ascii?Q?exAnWAuPDU5yQ5v8M/r93UXMWLuf8txoDgpisz7YAWTKkcvIZK62rPDRCU97?= =?us-ascii?Q?mcn6rKb/N9QbJBluPtuuKVsD7PMSj5yN3wmmjufUsTPdMrswdoA0+DfQh96P?= =?us-ascii?Q?6D7D6exnDuBXoGtCAdqDPfGvI4RAzNLnsNwfF2cLhx9Z2u2vnCYm8BT18Xwo?= =?us-ascii?Q?7XVepnbM+Np1ihJpWaxsyNQnBLYg3XJ7d47TM59j72Bd3LNYdAyWEsW319Fg?= =?us-ascii?Q?qgdvJhkB/iughMR7koUDeIcCsQ6/Zb+nuTZ9AtB+d+0lX2qiw/rbVEd8tZk+?= =?us-ascii?Q?HXVJIvmBYSkN4hqw7KguANz3nJ35DCZQfQMGrLKNFrZ7lAv0rnBbA8p1cTNX?= =?us-ascii?Q?+V1G1Z8ygzlrqqdFfBzm9KguKHJJ73Y4QR2UXJttiiF+NdFoH3b5+QcsZVMg?= =?us-ascii?Q?3+EV4DCTMqkM5GzSvg9HUWqcP8eGC/SyD9WbnHwJlj2uFggaoi6MnhZYhJkn?= =?us-ascii?Q?wU5UZVq6WYWZuP9xKm+sD5SsrbaGuWZdanGteVhZc52LxSvG5Mg9igjOjWEQ?= =?us-ascii?Q?bdpEYTXJzp6WzAgj/sw7j9wNg3AZCKFUz4gcrsaMGwG/Eet2yVBKNzlj9wum?= =?us-ascii?Q?aBqEqXrKoVq4YQT4GlK3ZWOfqWyyk/yGPJDLJsw8khIw95jEZDeBlbzSdxfd?= =?us-ascii?Q?DnTJXgBFmm3+4QvTzZnq5a4mp4r3ZGeV1m07SSfH99Fw1LZqfaQW6ayyssPs?= =?us-ascii?Q?lE3qcXtlelQscxQ4lW/XFhZyckCoSYfDjEKAaeXsWQEehVBQq5yMRHLs64QV?= =?us-ascii?Q?FPV3HPV0Tj8/kvdwiK4XgnsDR3FEDMMksMSWMmq2J8zJz2emvu2/spYxHWc0?= =?us-ascii?Q?ct26i/XrDfEBasymKAkW3Xp4Kl/F5xr+QfDyNGN1ZlJqF7LkbQzxygGSMg/e?= =?us-ascii?Q?ZPkil7O6V2llP4GKJQ96nA84zFVCMusxqsFVxzkvCLR+rnnbJLx6HyaPMe+8?= =?us-ascii?Q?hgEUgOXPGynU65P3o7MJ7zoWct/4bsmRyk6XYxDLNnMloisTFM9DWB9xbSdP?= =?us-ascii?Q?jMU5Q3FpXILLl6/ObNaOg/TTDOBwwQmbTxHNaVqkFnwK/nwTsVBbFUydJJFj?= =?us-ascii?Q?GjFNpL2v78n+KZAreGHEcy7OhmDuS4KM8IYAUBMjANYaqbBJVm7xx+E4B9Cc?= =?us-ascii?Q?DAVvtGYwZf0fgYUTwHHZUDjRTDuoRKaoQ85lw9eSCxfs0ZYUSJS1tzHvrvx1?= =?us-ascii?Q?b8zqy3Lv+I4PrP5/q2ZckmJAqZeUeNvzULYp96LLYW90fBhQDHogh7wjs1Xh?= =?us-ascii?Q?Mf3n6/GnI5/yxKDnj/sp3nF3VvHdkTbA?= Content-Type: text/plain; charset="us-ascii" Content-ID: <551C6A07A2D0984393522A89FB3A3748@NORP279.PROD.OUTLOOK.COM> Content-Transfer-Encoding: quoted-printable Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-9412-4-msonline-outlook-ecede.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SVAP279MB0383.NORP279.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: ffc9fb24-470a-488e-76cb-08deabac3fb1 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 May 2026 20:15:42.4433 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SV0P279MB0680 From: bobwei9@hotmail.com (Bob Weinand) Hey Larry, > Am 19.01.2026 um 16:58 schrieb Larry Garfield : >=20 > As noted in Future Scope, we can add function-based context managers as w= ell based on generators. At the moment we're not convinced it's necessary,= but it's a straightforward add-on if we find that always writing a class f= or a context manager is too cumbersome. >=20 > The issue with punting this behavior to user-space is that a library cann= ot provide this sort of functionality in a clean way. >=20 > In an ideal world, if we had auto-capturing long-closures, then I would a= gree this is largely unnecessary and could instead be implemented like so (= to reuse the examples from the RFC): >=20 > $conn->inTransaction(function () { > // SQL stuff. > }); >=20 > $locker->lock('file.txt', function () { > // File stuff. > }); >=20 > $scope->inScope(function () { > $scope->spawn(yadda yadda); > }); >=20 > $errorHandlerScope->run(fn() =3D> null, function () { > // Do stuff here with no error handling. > }); >=20 > And so forth. If we had auto-capturing closures, I would probably argue = that is a better approach. >=20 > However, auto-capturing closures have been rejected several times, and I = have no confidence that we will ever get them. (Whether you approve or dis= approve of that is your personal opinion.) The current alternative involve= s using lots of `use` clauses, which is needlessly clunky to the point that= folks try to avoid it. >=20 > I literally have code like this in a project right now, and I've had to d= o this many times: >=20 > public function parseFolder(PhysicalPath $physicalPath, LogicalPath $logi= calPath, array $mounts): bool > { > return $this->cache->inTransaction(function() use ($physicalPath, $log= icalPath, $mounts) { > // Lots of SQL updates here. > }); > } >=20 > That's just gross. :-) This is exactly the example that's been used in t= he past to argue in favor of auto-capturing closures, but it's never been s= uccessful. I fully agree that this is gross. I have just created a comprehensive RFC h= ttps://wiki.php.net/rfc/scope-functions to address this underlying problem = you describe. It does address quite a few of the main issues people had with trivial auto= -capturing Closures which would simply clone the symbol table. I personally really don't like this Context Managers RFC given the apparent= complexity it has (only for heavyweight usages basically, library style - = you wouldn't just create ContextManager implementing classes ad hoc for eve= rything). Thus, I'd like to ask you to consider my RFC first and give feedback on it,= and possibly - obviously only if you think my RFC is a good choice for the= language - pause this RFC for as long as mine is under discussion. Thanks, Bob=