Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129098 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 9B1291A00BC for ; Wed, 5 Nov 2025 22:53:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1762383238; bh=7I+Gw00A1IUbcmtV3K83GfGZ7O2Xkd6ZwY21Fzmwl/c=; h=Date:Subject:From:To:References:In-Reply-To:From; b=Udy1fE3QB01yxMgKQfA2DT3L/g1RtBxjaJRIkTZwSvlQYMAzGLFvWR84BxBoSR3oN 3yxlsZZ9wrwegCKLggJX26wR+LNpybOy5L8ljmH+0EjT2avwQiCBlG8IHoDBFg++yb Q48EJJEa9gR3mGo/fwpYScgBM7YIOLbBQQ1cBlG5dPiXR7Shr/1NKaJQoiKeQsBWVg bdEpTDdNUbVke6d9i3/qkLLOyeiJ8uk9TKrhxxKPQ4h8Tnz3F43ZI5RE3aDQF/KI7T TjYltKNnfEZzqadVhJJiIj9Dj0+lYK5Va/4BSfgxG5OUVn8LmbBQQPVZRTlImo0oUM eEGGvC7dPCCEw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 45326180212 for ; Wed, 5 Nov 2025 22:53:56 +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_DNSWL_NONE, 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 DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazolkn19012010.outbound.protection.outlook.com [52.103.32.10]) (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 22:53:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sVGpAgpo4VUEVAMd8L7L2L4hGax3iLdvSMbnCTFakz2zTekgxEJEzuVco/ufaKTC90V37tPrCR4514zGK6IY4MwgEcbM3muYTNyLXT4lMhS9L1YJ4AXahOBluFEFt71FbeATpLkBKu6fxH9zIrsk3M9USfqW1n9ttAs4+JowbYd4Xwwfa8w1+QXw1sbEwbhT0rOcz1+IfrpU8Hj5Qc+MdF/xq0BEDxBm1l4Bnn+2lXcVcuMYEYcTE7+4XFHRDJ08QwREE3oLMrg0ab2PG6HXd/IH7hqzfsMGb3pKyQSe7alVJU9Za0tvbqSeS+Ux16/wfDSZG6MNX3C7qySXk5QNaw== 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=y+CJNuXIh1OPBe4BN5YiSIOm2xQofa2qb4LVZLzYaJo=; b=W01bHuemaAcB4Y46R/jixMxdcZyEQKQQzrJicotobSSIHxIuwq4jedItB13umafvfbsu5RFH9ruaJjBx8u4yaIuG+zLBLJDSC+lHERWhQKBXaI+wFssUHui/RAaEJmJRHPnqtvCnAhygLrEkcCXM4wVv9PDT+2pesVSBISRsL3OkH8o4qOcpQFj6AotpzwktDiMbI8C4caij51ZTQ9waR0b4CwFxS7KBw4T0gVFWAYQSngy5iMF6WOXsK5xVGDDg5h83JKXJ+EOUmLBqFCEg3551qDFpfpTrv6j4FvA3cAcl29nGmMDMS0Oxpf69LjFlPA5rwc38LrkH6RSFfJ2B4w== 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=y+CJNuXIh1OPBe4BN5YiSIOm2xQofa2qb4LVZLzYaJo=; b=Q+2PlLgcXIOXXxjVqfu6nDQD/w/sTnGJy6qV0pMUqQkUVnAetrwzyeSrVqD8jmNxm6yTUxn4sEBIpgNmsPhGTyUPqwQQ6JZ3n1kVRFSM0umsgfLmKO7KogBmpt1ir/sp/H2jXslbPp9jKjtgh3xyXNEt6RKuIbC85BPq8LaruIK5Ftrj362q/alc+/o30NH1myS+5O9F5zrZi18ydteQTQKKLiT9F1K2YMdRMk2HR3SuMXoxFzm47PMRs5xfWf7uswAIhz22ZbeRPMP3s6q4FSny+XxFmKBV7EEPzwWNHjwV7L1JPs+A0jq8a4QIafKui+X7Vm8vjgcG9y3CepxwOQ== Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) by DU0P250MB1020.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:423::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Wed, 5 Nov 2025 22:53:46 +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 22:53:46 +0000 Message-ID: Date: Wed, 5 Nov 2025 23:53:44 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] [RFC] Context Managers To: Larry Garfield , php internals , =?UTF-8?Q?Tim_D=C3=BCsterhus?= , Arnaud Le Blanc , Seifeddine Gmati References: <4c9c497f-3df1-4531-85f2-aeba9ca79a03@hotmail.com> Content-Language: en-US In-Reply-To: <4c9c497f-3df1-4531-85f2-aeba9ca79a03@hotmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR4P281CA0237.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e9::12) To AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) X-Microsoft-Original-Message-ID: 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_|DU0P250MB1020:EE_ X-MS-Office365-Filtering-Correlation-Id: a0c0f758-22a8-403e-d334-08de1cbe2d3e X-Microsoft-Antispam: BCL:0;ARA:14566002|5072599009|12121999013|23021999003|6090799003|8060799015|15080799012|19110799012|461199028|40105399003|440099028|3412199025|26104999006; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TExLd2hWZjZyUTVxaFkyU1BoN2V6bm1JbGNxOEFFcGFQeGh5RWxlb3B5OW1l?= =?utf-8?B?bFVUMW51b0krMGpyYWxjOFhSZXk0UWttWTVOR0R1SlBld2o2YTRFV0YvZU9W?= =?utf-8?B?a09jUElybXNwTDNXMGpFR0J5WlNyR1IzS2RqOWYxc3E1K2J1aVNmQXVmVkds?= =?utf-8?B?a0xxMlBKR1Q2NEFOZmdvdkU3QjZDK3pTb0d1ODZ0Q0ZaNG5kMk8zZVIzLzVm?= =?utf-8?B?SmZKUGxaY3R6eGh3a29VUFBsbWp5NUZxRUxIakF0a1pxeXpCMUtqdVhYeUJQ?= =?utf-8?B?cGVtTmJkdm01ZWI4c3AvZEkrSG4vcDlEbTRuRkJVMml4dHhkeDhjVUJKbFF6?= =?utf-8?B?VWlNMzdESk1YVWN5eG41dzNrN1FncGZvVkVIU0hSakp4T3FnOXNyTlFydmJl?= =?utf-8?B?M3ozN1lqUE5FMWJjcm83b1hsSFozQ3Rvcy9XQ25KV0tkd3dPSHhJMFVYODdW?= =?utf-8?B?aTJOK2M5K0gya3d3eXp4cFhaS0ZXeFAzbGUwckx6Q1dxT29Nc3ZjU1dsZ0Jj?= =?utf-8?B?MkJwVG8raDlLc3B5VkFpY1BoaVgydHBLYWkrS0JKR1RuR1Mvb0U4blFTbEdw?= =?utf-8?B?ZncrOVJBWmZBT0J5eURNSFgwbkZYTDVzdllBMnlyQmREaGwybjlPYzRKM3ZV?= =?utf-8?B?RWJ3YkxXUXNQVWY5OTJQaTUrZFpzNC9HK1EwRXVnREF2SXBZdXVrV2JvVG0r?= =?utf-8?B?QlhtVlQvcFhsZW5mT0VodDBjOWlZck9EeEVrT1U1Y0l6TEFTNWxRdnhSQmU2?= =?utf-8?B?dXhNbWVsQ3VGUU5rT2ZzcStMK3JVUkUvejhkSHJXeFIzY25jQzU4K0VXYkUv?= =?utf-8?B?aTMyb0hPMUErRWw5bjJXNXczRGZsWE9ld3F3Z2w4VVVaSkQ0T2FVTU9CSHVF?= =?utf-8?B?VkdiTEgwTytreER2T05US2xDT0ZzZDhDVmxjZi9yc1BWYi9PY21UdmpST2VZ?= =?utf-8?B?OFgzNkYxUm1yTURFV0o4VnUzU211QWt3RUVKRS9DUzA0Ry9weWdlRXpPVkpu?= =?utf-8?B?RHNtTmp5eWFVcWpuc01FS3NBeUUyTkw1MkFzV3B6Q0N4ZUsxVE5vMm9FN3hk?= =?utf-8?B?OEdmVnlGWUVweG9RdVBtWEZaMW81SUQ4NTV0a1hIb2IxK0EzMXpwVzhYRTZq?= =?utf-8?B?WEVBbnhYRHBLV09FaVFtRTY1WG4zUTQ2TXJPMEhnYTJFeDBqTGRGdmwwSlhK?= =?utf-8?B?YkUyc2k0RFBmd3Z5WW1HenV1STFVQldEL1Rxem1vei9nY3p1eGFMQ1prNllT?= =?utf-8?B?d3J0S3dhTTVzbTFLUWRCKzJKaGcyN09PVjVFaDJTREFQZEpraXV6dU1HMEc3?= =?utf-8?B?dGxFcS9EclVwYTNwa0liUTVPSmowbzErbmU0ZUs0NSt2RHljUHBzcVk0ckVs?= =?utf-8?B?UW1taWVobEhuTzBFUExJQXJzcC91UUhXeFVTZGhZV2hhczdWRFUxdlRkUWdO?= =?utf-8?B?UHhjWEdwU3BwaWRWMUFsL29jM04xR081Y28xNmVPdEVVdnNjOGZEd0x1RFhF?= =?utf-8?B?cWpCRGpDYmZLbVZjTk5vYVZZV3dKU2cxdzI5amgxSTZPSzFvb2FPa205UDJ2?= =?utf-8?B?ODRSMU1qQ1p0Y2FYNEQrVTdrd0hSVzlsNDRxd0RVSG12ZWVpRmZ0ZFZ0N0Q4?= =?utf-8?Q?rkHWXnt8zTvVyBYZbzHJbPHJLuHCBgNaB7q5n0037abo=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SStMdWRhL1duRGdtaGVwZXpXZmFrV2RSNFFjc0I1bCtGUkJXaXVaNnBGSEZR?= =?utf-8?B?QXBCN2tuRVRnaUx5c0xaMEc5dFhSQmdyaElZQWovU05XMHZNK0dZd3krUDJ6?= =?utf-8?B?MFFLaUJTdTA4Y1JoSjU3Q3lDeFcrSVBSS0tCanVlVXkrY1plMUZEM1AxOFNp?= =?utf-8?B?d3VMUUN1cHRhVElDalRmTldFemlZOS9rMnVXdXR5RkNtam44V3BRaE1zWUhH?= =?utf-8?B?NzlKU2lUVHR3Z3BlTnk5Z2VXSS9LU2xaanY2aFg4RUluODZ1VXlEdEpoUms1?= =?utf-8?B?MFhiaVBtaDBodHpQMUM2SzA0d1VVamVVV2VmTHIrUE1idkZySU10NlBTY2lB?= =?utf-8?B?TERmT1ZlbkxYdWRqZVhpMndNZi9SSWRLdHZGNlJGbGVJdUM4aDdlaXU1TEtN?= =?utf-8?B?S2YxaXdwdjRUcWp5VnZvenIzUGw2WmVjTUxKa0RGSEJpTkp4ZjZhRlFCT2tV?= =?utf-8?B?aHFRaTRYK0QyT2hIbFFVa3VNT2llOHdVRDkvVFRmeHBRTTdUMWo1N0ZoUU5K?= =?utf-8?B?b05iUm9JdkJXQjA1L1NVN2o0cWZFN2xuTWJLRFpoQk56NnJudjBFUTEyb1h6?= =?utf-8?B?eHV6RWpTcHdVUzVTLzlxREhzZVU0TC9mcHNYNUN4ckFCUVJrVlBZSk9BcFp6?= =?utf-8?B?R2w3d3ZvNmpSbExCQlY5ZU1YZFVnTmJVUzZlUXAzbm5iTGs1ZlB5NHRQUkJI?= =?utf-8?B?QWFpSU1KMjhjQ3ZiMktyZGhMeWM1bStUZGF1cVpDTi9mOEZKSUJHZ05Mdmln?= =?utf-8?B?OVBNa2U3dWMxZ3RVTU9Ga3M4Y21iUHpyWVhZcko1SlNCLzFEM1lzR1BIczQx?= =?utf-8?B?dWErOHNBVk9vY2FTOWhIUlZ4SmZUVlAwQjk4VERPb3cwWXRwdmlJS01DL3hZ?= =?utf-8?B?RWpFc2JLWk10SVZ2a1h5ckNHdGpQOUt0V0IxcGoycXk2SThYUFRDTVhwSUc0?= =?utf-8?B?NEtpd3FLVUtxaUpNS2dGMUNSU3J4UVpiQXEyeThHS2syUWdqUUQ5bTliNWVh?= =?utf-8?B?OFEwNlJaUnFXTkVlWE4xUEJPRmU5MHZKMkV6eE90eHppWndDSWlYSjhuRm1h?= =?utf-8?B?V3p1WWRlM01yTUJFSjlRdzBCVFZ4cExPdnVVOHRlU2dGY0RvL0gxYUdyK0kx?= =?utf-8?B?OXA2WG5jUFppRDFuR1Z3QmpWWWFHYlMzTTNDeWhtME0rcDQ1SklxOC9HdjJi?= =?utf-8?B?R3M0dy9jM3RKQmY5NHRLTU9nbWhzT2xSbnplM3VHcHdsVG80dVVFRW1nTjZF?= =?utf-8?B?a0lYOXRScEhtREtCLzg1NUtEcStUeS9XYWt6aUdzWHRESXFWd2NpV01tZ0JR?= =?utf-8?B?V2M0N1drU2pjRWRjMkJQZk05bk94UHNiRG1YWklKT2NlQlluODkrdUZ5dDlB?= =?utf-8?B?SkVrcjJWeUVva0RSZ3I1dXMzS1dLK0lKbk9vOEhnczVqSmdMV2p5T0xta3kw?= =?utf-8?B?YWJUUVRtK0tjRnZqQndJNFNRQUd3WHBMalVHLytnYWFTMUpRbXpIYXc3Wkt1?= =?utf-8?B?VXFWc29oNEd1UHcvUEZvME1HY3BOdWVwZjUrdnBmc3hsamFQR3pRMTFRbFhG?= =?utf-8?B?RXhvSzY1RldXc0NUeFM0WGEzdnJsM1A1SER2eU5qMDFiWENCOHR2NVQyei9X?= =?utf-8?B?RCs1Q1NKSDFXSjdqVzRaZGE4cGZybFgxUWc5eTVNcTY1cTVkS2kyYVQ1dGdX?= =?utf-8?B?S1M5TFpwckF6VDFxaitJVm44RS9iTTdHaTZSUk9vSWJiMmVZQlRMTEY3dU03?= =?utf-8?Q?A4Il5xkdyZB2qrHsPU=3D?= X-OriginatorOrg: sct-15-20-8534-15-msonline-outlook-5f066.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: a0c0f758-22a8-403e-d334-08de1cbe2d3e X-MS-Exchange-CrossTenant-AuthSource: AM8P250MB0170.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2025 22:53:46.4958 (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: DU0P250MB1020 From: bobwei9@hotmail.com (Bob Weinand) Oops, pressed send too fast: On 5.11.2025 23:38:58, Bob Weinand wrote: > Last thing - proper API usage forces you to use that construct. I wanted to add that you have to use the construct to do it properly. But it's easy to either not be aware of with() and just see enterContext(), because that makes it work. Leaving the context is not strictly required for some use cases where you'd use the ContextManager. Also, I have a lot of experience with it from C#, and it ... sucks. It's annoying. I forget about using() all the time. It's crappy design. It also only has IDisposable, and does not require enterContext() first. So yes, at least proper implementations of the ContextManager will probably do the effort to blow up in your face if you don't call enterContext(). But still, it's a discovery step away. It's not intuitive that it has to be called (or better, wrapped in with :-)) without running the code / looking at the actual interfaces implemented by the returned object. The use() proposal has the big advantage, that function boundaries are pretty natural. You do not actually introduce cycles *that* easily, unless you store intermediary state (like callbacks, custom user objects). It will work flawlessly in most cases without use(). And it's easy to think "this is a database transaction, I probably should wrap it in use()" - without having any actual knowledge of the implementation details of the class (like the ContextManager being implemented). Sure, use() is not *perfect* either - unlike e.g. Rust which intrinsically prevents cycles from being possible at all, but it's much better than the with() with all its shortcomings. Small addendum on the forcing destructors topic: We might want to make the force-destructable behaviour opt-in. I.e. by default, if you use() an object and it leaves scope, nothing happens, unless a #[ForceDestructInUse] attribute is given, to prevent accidental destruction of objects which very much should not be autodestructed. Sorry for splitting into two mails... Bob