Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129103 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 9568D1A00BC for ; Wed, 5 Nov 2025 23:58:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1762387142; bh=Eu1QnqUFw+As6ysORQ+sS0Oj5j3bDkUYi1j7bvLWrsA=; h=Date:Subject:To:References:From:In-Reply-To:From; b=DPHbBUuESGRv6olcFyMbOEAVsmgCl8nAMqlNfNjwvUM6fU0HEMC2q9oJCTqhvtM1B c3S8TETK5qkWeTmql4uLR0tvwb8UfvYKRKqX0RUuXbtacXdAoa/Jhfe7jW7tu4Fjq+ YAe5YYGy9U31Dkox2O3Y8z3cOyISarP2T6+KsN6YyJ223KA9GSYbOqkvuFkaUWNKWX aEg+Rzs9SXoJq5tU5AZJKycpKvSYRqekyyXkW1wKaSEjRSB/5gx72aVRN+tc9TVjqW 8vhYgz2/J4InRyJKCBIphnRGg8hEeQy8DXOG6tVZOpzYpswUCcWSkjTCHdxQFbys3U OG1cU1xbPDJtA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 8206618006E for ; Wed, 5 Nov 2025 23:59:01 +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=ARC_SIGNED,ARC_VALID,BAYES_50, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazolkn19011030.outbound.protection.outlook.com [52.103.39.30]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 5 Nov 2025 23:59:01 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=McD70/xO3Fld3L2prQ6Wamk0w/799kn5XgSuO++75GbFO4bqPRzFV/3VeHEFGTW9AgckSgaTniOBMkhPZwifXgn0VFb14qS0XfkPiDRv811Aby0L+7/RRAvuXaoAIBbYGS8QkzgVkuPAfiUbM96fqJfrvGan54p1Y98H+Iaps64fMw2TDLSIp5QFod2EKDUsiERisUJH5az0FnQFWna8ltfnZc2W4+yvdjVQRkfWe1rz9PuYFrlkUz0XQwC0AyYNho2tE4YIh1z4FkGki9dHkCzQ0bnSIqAk4R3obmlN/WaZf0T2er1VgPKUkd8sWaAU7YQBNHme2BhKwGEYs1mPIA== 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=wc0uEF+PR6Mxw78SGBsnwWxP7xCV+SyY5thfz4vZ828=; b=b53boIoaxvMPyoTBFmBCJjnX4ucIp0McnW57I5LcglrkRyyLWjSBHhGM1b9Sr4aksmt0YrmhkBcQdLP18s7w2axczLjBqnWMXRKTBBYqH9hMbfCWGBlOdb98TnlRIbS5iIWVtHYDOv+vrduEIJOQNQ/gaEEK3t8P9VIWhy9x2OZD+vt4YHV908lxOuNXhBGgXBgnYElv26F2yD2n+kuv/DGgel9f8H56bOM8xb+yqNnNs94CwXzV20VZRsdlym1GN98ds81HivHdHgQzpRKdg3yCULXoga7nlu/rgNjqleyyfGuQW3/sYVt/8u+97iY2NjUVtSlfleo004qJvIEIng== 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=wc0uEF+PR6Mxw78SGBsnwWxP7xCV+SyY5thfz4vZ828=; b=gMOd+fps/GfnW5zO5XoKXO5jm0ooMHLhtCXFGSCcXWloBBOc/51xsKkh7YGfBDq0UiqrrKmhACTC7hwNDt1SJesfDBwIit0ETKYOFH8NcciucG56L10Svqlcg1Ou1aNppn9eUFBb47KjI1fZ5pK/RZ+W0E40N0Psz7pN5sy4C3/1H4YqIdk3+9VlK6S6iyPG2ClJ+gEaumoAMgTZfq5ZYkIN8cIpVItcsJPDmSikIoGSPZzZv6XF5c7+xkASSao/e0/6KQuNrirk07UbUHhcVr39ScU90Thms5oViNfu1WeGVhvzOIa5HwDz8cAIdKFaV+R4PTPwA/OGNN/XI6dCVw== Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.7; Wed, 5 Nov 2025 23:58:54 +0000 Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff]) by AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff%3]) with mapi id 15.20.9298.006; Wed, 5 Nov 2025 23:58:54 +0000 Message-ID: Date: Thu, 6 Nov 2025 00:58:52 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] [RFC] Context Managers To: "Rowan Tommins [IMSoP]" , internals@lists.php.net References: Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: PA7P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2df::18) To AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) X-Microsoft-Original-Message-ID: <44c8eef8-3ef3-4e75-855e-46508484c5cb@hotmail.com> Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM8P250MB0170:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c0e1c00-1325-4f3f-3f3f-08de1cc7464c X-Microsoft-Antispam: BCL:0;ARA:14566002|15080799012|23021999003|12121999013|461199028|6090799003|19110799012|8060799015|5072599009|40105399003|3412199025|440099028|26104999006; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bWJMQzRNaUV6NHVPYTNzRXVPbkJvV1BSUld5THJ4dXU3SVlXOWRBZlRXaURM?= =?utf-8?B?MmpITkY3SGJxZUZSWXFPdmY5czlLOTE1dUNOWlFDNmhPSWozbENENExib0hI?= =?utf-8?B?OUo5VHZuc3lrRTIrMHFTUFVSa0Y3eWVLR1hOS1l3LzFFRExhOFJETTBVSHJk?= =?utf-8?B?YTdHWTlaRDBDSnBEem8ya2Y1UHF3T1k2VDlBL1pRQWVIZEo0dEg0bGFQYVdq?= =?utf-8?B?YUd3MHlQdkRuTGc5RC9pNnpFNnNaTXJkbm82TTNZYjRvdjFvc2cya0pNSmI3?= =?utf-8?B?MVhMYWZsbTlNTVI2UVl4V0RUU3kyQkxHVDlzUEFuNzBCUG5JTHJGY1MrU05k?= =?utf-8?B?V3ZUWDdSbTd2QzA5aGFZWFplcDQ2VzNQVlhRZ3VGUkpqTDlPWVJKNzczU2lI?= =?utf-8?B?TW1PRVEwbTFlTk05NlR5cStKTW9HcVFwbFF5UW5GaGNzQUJMbGh0WnFuVGdF?= =?utf-8?B?WE9RbUwrWmMxYmpQUTA3S3h3MU1leERHSnA2Q3h6VEI0S2ljK1BQaWpBc0gz?= =?utf-8?B?MlJqMFNSck9IYy9XVktCTGQyMEdwYndvOFhFaC9IaDNDYzViNGNRQi9ZWjNK?= =?utf-8?B?NHlxVCtQRlpwSlR3Um1mQ1BweUc0b2RBeXhwdmtrMXh0WkQzc3kzdkpxYzJO?= =?utf-8?B?cHBtQU1YSlgxSVhKWDJqQ3R6UW52RFhsWHRJVU5VTnFiS2J0OVFpTG5qbkJJ?= =?utf-8?B?T1Fib0NTNWtvL2pHVDA0MXNqUTY0aUs5WlBiWTE1TzlQb0N6MkhJK3FlNU5B?= =?utf-8?B?OUQ0SSsxRHoyNFozbEhGOVNVaWt1NXZiczlPTU1LMFAybUg1SFo4WGlrUzZ2?= =?utf-8?B?SVZERTlvWWxrSkgzU3BpUlYrWVJmNzRVNVJRNnlycUtpdXlGTEc5Y1BjNmpq?= =?utf-8?B?Tytnd0h3ZDU0b2RXQW52YS9Vc0pEaTc5ZExwUlZ0R0c2dGhRODcwRWQyMjRV?= =?utf-8?B?YnJsbjVyRjlVOXBQY1lBK25kVmZ5Nk1JamJTR2VSem8yWGdxOWo3TDl0UjFo?= =?utf-8?B?OTdyTWloRERkdzgzeDZ4REJ1VldtN2RwN2dXZG4ybjhmY2xxMmdISEZIeUpY?= =?utf-8?B?YS9FbDBkR0dnN2YxN08yNkxsMTU0ZXpPeSsvZmU0VXpXVGxRdUhVSnhUSFVF?= =?utf-8?B?MytDUEpnV0E2Y3ZEZGJOdDZUQ3ZhSFpGYlNVTjdkM28zQlJkMFhGYVREYkcw?= =?utf-8?B?dDFjMHJzaUN6elRwL1IzaXhkWHFXc2p3UlJCdVZQeUZTS0FNaTltOG5HaERr?= =?utf-8?B?TEcxMllOVXJORWs3U3ljcnp4Q0JTcGVqMzVGVjJTbk1SMjNVME50SkUvSy8w?= =?utf-8?B?Y2gvc09vV0JqL0l2UUhVamZtNTNjUitTTE16aWtvd0x4UENGcmNVZUJKdVVk?= =?utf-8?B?NkFHdXRYaDdrQjJsWVJnWC81bGlVSUNHdDJ1a0YxRTBiSjl4dkVadHoyejcz?= =?utf-8?B?K0JUTk42WUZhMFMyRi91ekdxQmY3UXQrclFNQjhpTGhCSXU4eDFFZGhxUm9G?= =?utf-8?B?bmY2UlRsdjEvVXBPMmFMQmFqNnNWaytrTDdlTEowNVVjeVdyaGFVcW9qTERt?= =?utf-8?B?bFFaZ1R5Qkczd08yU1pTVzhIMDRBZnAxQm9oNUVQaDQ3Z0hlL1VKdjNxQWFP?= =?utf-8?Q?EyFXT3kOJU+1k97NaYm7khUhWW5PrN/o3ATb5AxXljW4=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VHozcG9acU1DME5QMXVLbmd6UkswVlQwVFZ6WlRjTlQ2d25jOXk0ZDk1VXhQ?= =?utf-8?B?QlJoM0ZpUDBMK3JaMXU3THYxNmpxTHR0RnpUTUhMUmtTRnY5L1NJajJ5QWNQ?= =?utf-8?B?SHJhejgrTWdUMTY0Y3ZuVFRJZHBmUkY5bk1pcTdTSWExM01GbTJIalZiSDFa?= =?utf-8?B?UitTeGozUFgvTFNCYWlQTXBhNjVtT0U4c3YvUDBqTzJWb2dGdzBmRFYzK1RC?= =?utf-8?B?TVUzbi9PbzB2TEM3VlVEd3I0L09SdXljd09jYUNtWGlOSkd4enFHQkwzU3hG?= =?utf-8?B?TDRNcHRPZ1loZ1RMbkJ5QjJFNGwrMWp0VlhEUmFGa0ZMQUQ5Slhkd09vcWNI?= =?utf-8?B?QUdJU1VCVW1zRkxTZk1pSXFnUXQyd1hKaHZnNWw0TGl5RjNZYmttYW13aklG?= =?utf-8?B?MnYzL3BkSFhtY1F1Z1FwMEVxVlAxZnZJY1o3SUVxYWpRTFRIaW54NDRhZDk0?= =?utf-8?B?bjBQaFQrZ2dJYXM0MXp1OUNMMWRjdXh2U3lNUE9qYkhiV2luRnU3S3dXWXRt?= =?utf-8?B?c1hrOFFhMFpGbmJNK1V6dUdHTytMZWV6N2FaWXhIZ1JZbThHeTlIVU5XL3Qy?= =?utf-8?B?cnVOTW1QWUpaQk0zNVFINFNMandzSzluV09FY0M5WTFXYVdwUEttOWpGWWV1?= =?utf-8?B?aUFtNzdBdHhtWWwxRVh5djhTWDJqbzd5VjFIVmRreHJ3SExGWTg1bDdaUnFC?= =?utf-8?B?WGZNQlJqSHlGL3NDUWdKUTBYd2pneGRyZnF3T1RUdWJMNGs3a1Y2NjN1SjNW?= =?utf-8?B?elE5eUt2VDVYU0RnbVFNMk9nVFpxcXA3cHBFSlNXTytDTG8rSVBzeWJ6bTVh?= =?utf-8?B?cnF0UUo0WnY5OTJHdjVxUFdIMkEySHNUdU14VHhjZFNNWHl5V1orY0gzQ3hj?= =?utf-8?B?NTdVdEs3ajJLS2FyV0ZuL3k5UVJhZ29aWEoyd0Y0c255YnB2UVJxQnYzdkVT?= =?utf-8?B?ZlFzZHpIbnFxb3JDRWttYk1IakhvVUwyMm41M0Q2anZtYU0vdmFRSjMwT2I5?= =?utf-8?B?SWQxOGJkMUJEK0JXTGZIK2pQb3FvNTZIUWU0akdHTnVyZ3pOTWFDcVJSd3VD?= =?utf-8?B?SFJOeGVYcHlmalJ4d2R4blBhQU5iZTFlaW9DZEg4Y2RvbUMzQTVIRUdDNDI3?= =?utf-8?B?T241d1ZuMDVycmR2NURPdWYxZGluWlY3WjlwWm1qeVowK2xtT2RVMWFabGdH?= =?utf-8?B?NVpEbjZvUko2SjM3ckxaYlc5eEVBZmdJTkgzYVdsV3NSY0ZJQ3ZlVGNtUWlp?= =?utf-8?B?S1ltZ0xCRlRySzhkVjk5bklkQkh2ckdVSEhwOWcxK0V4VUEvV3d5UEZQQmRR?= =?utf-8?B?T3p4MWtyMVR0WDBmMVhFTGFDaFV5SW5jQkNkR3pIc2ZaNDVzMG54dWh1Uk1Y?= =?utf-8?B?KzVScllHcEJ1bGg0QWRLaVQwd0lpejFlUUU4MFhtUnZVL05pZ09xS1R6SmVw?= =?utf-8?B?blE0ejhSWnBadklmaE1zZHdqOXhSN3dTR1dzMXVieFd0VzFkZTdrclYvMWV5?= =?utf-8?B?NDZuMzk0MjQ4UUhoOHFWdks2TEdoVmxZQkZTU3VJMWpEMjhwY0hjWElUenJX?= =?utf-8?B?d0R0QWxBTmw2amdxYkZtd2ZvRyt2QVdNSUYxRVVSeEVoU1NwYllRb01RVUU3?= =?utf-8?B?cmhlL0JhQzhoWld4cTQwZlZXMDd1K21EV3pIRnBNWDN3N21ZRFplZEI5UW1t?= =?utf-8?B?anRtcStBQ0lQa1NHWDJ0d2xQWDhtQTUwb1dRSEIySEY1QVZJb013L2hJWGZO?= =?utf-8?Q?QvIyb/bbLiUcAZsGcs=3D?= X-OriginatorOrg: sct-15-20-8534-15-msonline-outlook-5f066.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 0c0e1c00-1325-4f3f-3f3f-08de1cc7464c X-MS-Exchange-CrossTenant-AuthSource: AM8P250MB0170.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 23:58:54.0135 (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: AS4P250MB0413 From: bobwei9@hotmail.com (Bob Weinand) Hey Rowan, On 6.11.2025 00:27:41, Rowan Tommins [IMSoP] wrote: > On 05/11/2025 22:38, Bob Weinand wrote: >> I don't like that design, which effectively forces you to put safety >> checks for all but the simplest cases onto the ContextManager >> implementation. >> And it forces the user to recognize "this returned object >> DatabaseTranscation actually implements ContextManager, thus I should >> put it into with() and not immediately call methods on it". (A >> problem which the use() proposal from Tim does not have by design.) > > > I think you may have missed the key distinction between a "Context > Manager" (as designed by Python) and a "Disposable" (as used in C# and > others): the Context Manager is not the resource itself, it exists > only to meet the protocol/interface. > > In this code: > > with ( $dbConnection->transaction() as $handle ) { >    $handle->execute('I am in the transaction'); > } > > $handle is *not* the value returned by $dbConnection->transaction(), > it's the value returned by $dbConnection->transaction()->enterContext(). > > > One of the things that means is that if you just write > $foo=$dbConnection->transaction() you can't accidentally run any > methods on $foo, if all it has is enterContext and exitContext. You are right, I missed that there's an extra layer of nesting inside this. I think the DatabaseTransaction example put me on the wrong thought path because it just returned the connection it came from instead of a dedicated nested Transaction object. (The enterContext method in that example ought to include a startTransaction call.) However, I still think the proposed approach is dangerous with respect to forgetting the exitContext() call. When using manual handling. But yes, I agree, that's a much more manageable concern. And the onus of handling duplicate enterContext() and multiple exitContext() calls still lies on the implementer. The RFC does zero effort at addressing this. Thanks, Bob