Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:128014 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 C314F1A00BC for ; Fri, 11 Jul 2025 23:29:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1752276451; bh=oDS2FHIa73nSyzvKFG+F9914ep1esOoGz2nt45/VVeQ=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=kha9O5tGc1OEpxSfxAVACFq9frm7HlGEnUQkgNIAPpplwZOdBf9yOygPORY4bFuyE evhKe9fuI5EObWj4WLzrX8BCD+FXGy4knEhlaXhnyyVLGM9DMtCubhbaK+LNXsGVEV tvjrzmwceye51jPJ8o9HG4rXmUGqP10y9/cNJ25U0ZcP5YRsuzOimBxq39lAcOcHJ3 jk16Mdlp84EK2XM0+Kp9rOxj8zqDYxl5D90hnE3DKc8lysyc7qXQd+QanYn8UCXyu9 K0Aaq/QV8F+NliX2I0hIqGz4PA+1ye+sRvkTm/6GE9j8AAPXzS8Dog/QooDmaD8koo vyOwWnw+iLK9g== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 77A4E180047 for ; Fri, 11 Jul 2025 23:27:30 +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=-1.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_40, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, 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: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12olkn2059.outbound.protection.outlook.com [40.92.21.59]) (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 ; Fri, 11 Jul 2025 23:27:19 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=m3cSezRtF6zYXB/dECN0CICRZD69zovYOHCSPZ2dR1MG1eJdGrs5VpNMjZfYlhFrigJjoY+j8kAtlTucdh38YygjHL9LdJusohqtQOKd30gavg/tknTekN7HRuHFOPLwPh3zc1d5mEdT9YyFlHnI2nZmjDqDVyJOMlxfTAaImNXCxGm7GYDHgsSngn8mRZitaszhrH3JesNnT2l3GmbCWZtxU4BR/R8DWBDVAYF4zZbJ8aKYSbqrs2LSE4/B5q3Cr6zbMAILtmbqr+cO87Bc8G0ba8gKb/hXwjqsAaSg1NnLZMPm2mEXRXnPb2gy39EX3DN9aU6wqGwALUjTW3uyMg== 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=3/fOqM6QCiyKySxVfovRkcbEsR9brrpXed3lhU/p/xc=; b=kWzIKnk6NW0R3Ida3j/CYWdzfy/Tk6aM0jj/tgHgBCyTCfSYRzXslcCPd4KnImAa/C7TFoNVt/fO3H5KIr9l+GqJhzYMwSCnUaZUtQKEUiARuLSOdIllCmYzsRLEreiD46ZW+Hkg4jsg17txSDybGgU26Zj5UAV/fUep4cIPaa+gsNiOC9H+02XFsI2r/t786WQSsFAM4dLcp07RpJ0XwHpAS0kklDbDFXP9po9wdSasXRyLeVaWBFSjqfWgXKUSUTE3LZTNNlh7HpkdmYllDfG+iV3Jchaw0uJP/vrybmb+1m430PRqYGrw6nuVPo+5oiNbw2wbDMir7fFvfSaKDw== 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=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3/fOqM6QCiyKySxVfovRkcbEsR9brrpXed3lhU/p/xc=; b=OZuCRX7TP0dz1QiI9Kpx3zwWaeFsV31itmK/QGzgqfqxqEizqX53MAnLJveZ3sFpHuYsYwjc2XTvgUudoav/Ig1zLwnEHp7zc6mKayuuK7b+wsZPEtkdkWpkUa0te00VrsgA6XmjeGuCkKAATk6sneqrU/2BhP4xvv2dfPz5884Jw5EUMMlS/uWCd7A6QuzL/WUqdFzN3XWjcE5AQj6x/pOj4O/Qnr5Mh0ImWcUYCI+0PPxHs/+gw9Oslif1znI3FVT7gSSJnnwH4a0L2fDD/XFWrkobxFMhGrFjoWxbm0RdMtUDvnJcVNYVfQc6Vm7+qTIJJd7WWxVYqbW5ixYhTg== Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:5a9::14) by IA3P223MB1576.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:57f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.25; Fri, 11 Jul 2025 23:29:06 +0000 Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::2e7b:7134:b7fe:e849]) by BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::2e7b:7134:b7fe:e849%4]) with mapi id 15.20.8901.024; Fri, 11 Jul 2025 23:29:05 +0000 To: "Gina P. Banyard" , Nicolas Grekas CC: PHP internals Subject: Re: [PHP-DEV][RFC] Deprecate type juggling to and from bool type within the function type juggling context Thread-Topic: [PHP-DEV][RFC] Deprecate type juggling to and from bool type within the function type juggling context Thread-Index: AQHb09j7oi/4oobw+kS16eAa3SIdZbQVfVsAgAYbtYCAEWVIAIAAyKtf Date: Fri, 11 Jul 2025 23:29:05 +0000 Message-ID: References: <3Yl0UGauXmKqk7s7Hqbv6iaXru-hZHf8Wj6VjwwihgRSaqZo5EZ2ndsOle-ae41C-lvnirynWt6PpuD7UJPL0zPCw18QHFE81Eb--fiiEbc=@gpb.moe> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL4P223MB1364:EE_|IA3P223MB1576:EE_ x-ms-office365-filtering-correlation-id: 56a3c4e6-f4df-4cb3-6d61-08ddc0d2ba5b x-ms-exchange-slblob-mailprops: Cq7lScuPrnrdnmJi087DV+IJdJt4zLF8sCdp5J61IxUT1BQf7nUZKVxPgNYuREKC9XByNmy1MoYMR2Y026L3iHs9QYLDt/JlXzx7evmbz4ygd22H1IU8LJ0ehjaYw+l6gd1hWgMt8j1z/rw7zcg1wLjzNTrk5uZ35JeUW6HxSvUohFzbNdEp2jwl8k+t9aF87nXUUpPGanBBoxfBSC3y1lTjlQtRtfRKXJkhaDl9ibnaaEgYKy+yZb3y645vdY65GHmQ47ZBCBaus0B/e1lzjmRqHP8Rq4/RlaKGvC6YwhUNIiMntb7AeCRLUEHJOIMfdTFYcc3BG12G0TXdUyY9MwJtuR6k1R2xgsmjJir/Qe5vIP/C1Sty/8qi+AUnoKGWA+mefeeJcKZuzsDNFw94knndrNIUz995xyfrdgh0Sg1f0WWtFrcWSi0p4eykRs6PWTVmZ84hmcxuU4G3XfzGT9BknoqLevnn09YQCIra8I/gc0cGoqm4A7Bo80XEXk6WgJfuDlcVs6yj0GhHJo5cCpTjmPC8f3hidJfYty133xn+X1lwjFKP8ldXuFfxoX4SD8k7JDejNMk9DcLPOSl1/t5dYHM7QCtnd/kO2Dgs0oDuiDH6NoVLyYjE/dgGuxKvkOLS9d3fD2b2+IEhZSYTyf7Tse2bPKpBz+20/5JuxuhVYZKpFBg0FJkW3pTA5rFDxRvr5wjDa4TRnmQWp1Ok1t/ydANTbHbecy5W/fLXdsM55F2N+Re1s56Hh9BOm4dd7rW9PlPiUu4= x-microsoft-antispam: BCL:0;ARA:14566002|15080799012|461199028|15030799006|41001999006|3412199025|52005399003|440099028|40105399003|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?V1jFYBn+dwapkRD0wj0wNkQhkUExHlbmVQOrdxoOL0pzhlQlwGXbKUVhmR?= =?iso-8859-1?Q?PluGcI30ipaVXqgWWdeBTdPM2avWBQ+9y7pANYdjXrhaH4hEuggX6vBe84?= =?iso-8859-1?Q?MxoPtprvI9BOhvezewjrW3FlQVc9yCrqgozhaiwGHY7yahP6GGfM0WF3rM?= =?iso-8859-1?Q?qr69mqq9ykY7utxjQ0Sa7+jOpIe+8/zQv/z+a0OYx/ceTRsfkcUipjQO1a?= =?iso-8859-1?Q?bA9vfq6gLPVznnohfF9FJCyDUpxpftx+Eg+tv7azVr3KCekOFal5GB0NUl?= =?iso-8859-1?Q?UYrvpYYY/UUPjK2mKun5UUUN5lwDKZdQWS2wlZpYpl+B2npuPSmbfNo5+a?= =?iso-8859-1?Q?d1lDBgBKppYrOkmJJO41OZ8jpZyFYxBijk2zbuSrCYB4ke5WYPxkB9tBwk?= =?iso-8859-1?Q?BQTTQYpPj0cJ81Cy/fn6Ci9M4z+eF1vU9FKWWeDU6bVkJ6mkrsuMHHGBhB?= =?iso-8859-1?Q?yF+vIlEC88tk5fvW2tcGlf0/iRv5v7bsyL45KdGvBJgp7tYg/l94VjSFJZ?= =?iso-8859-1?Q?70xev+sEHr5GfjUAIWjfqvIm25+n5yUueVjBulVKzdqewFJEkx+8NBktJj?= =?iso-8859-1?Q?c6GLh7FsgepCqDYLcrNZcAvXH77OALA4QRDD2bzZcwCMtePrPBIe8aOsLO?= =?iso-8859-1?Q?1ghAux3Apcx8v85n/Rhl8XOxDUoZu56lFhhzsPUhqopz+QY1/jSjs/ziQu?= =?iso-8859-1?Q?3tqFodos2CBiateh+M619AZi6pfcdCz2WdJYS2pQTFNU1iN5GgVmGT7E5j?= =?iso-8859-1?Q?KBUsW3Pg965HSdBrwzWLx48VhxJ3tdT76oQHXvAeHh18xTzByJknAr6rfG?= =?iso-8859-1?Q?Jjl9CRpW5bFRwVhDs0FkqRGrudh1SKkeGm4/W0oa/wzWpm7rW5Y2wQh7qJ?= =?iso-8859-1?Q?jx5trA8c7gonjvvxEKExd5VHokYQp2aWbkY4KKztjVwDaHpBtuCSHzp3yV?= =?iso-8859-1?Q?CrBhGBkJElIKtcLfqe09DIVVogxqp9IjkUbU3p0zYKHOlbhhbdg32DqMTp?= =?iso-8859-1?Q?3GHE/JPVJpYw+6mYZi0ueNAbmdTItRViZpkvjmtfqMIWP28AaZaHZRSZFD?= =?iso-8859-1?Q?JjuFPyt4iSiC94z+92kC7hY5ZGc9sIxNqdTYxsdHlrOv3nXfgAPyLP8rJg?= =?iso-8859-1?Q?u113sIVTJP7tiITbhwufde46amDhAfK7+X30zncla6UdSbmryM?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?WnMkC7Cp3EIOK3sch7uy1YWzTV2amysE8jEzMxWFCtgfS943sWC9y76rU2?= =?iso-8859-1?Q?0Hgk0eEqjXimrJIelnwd8WFKDO92MT5PFvs8kAmYGusrJDd1YBxG369W6x?= =?iso-8859-1?Q?8F+YEmPknhGgN1IgN8kHfvPvNdLt4DUhnGPKEc8h4uSXd/uX6bSvZXbjf4?= =?iso-8859-1?Q?zilwgAbxtlc8AEww/0hNBifEjoJfSLzH077qzK4rbwXRkjFKWONOaNJt7P?= =?iso-8859-1?Q?VZshcXAAsapi6QheHgA8HB4FsJyxJYhH/Xnkv86IT5BE9tj2HPUn6BcXwC?= =?iso-8859-1?Q?s7JySulHtLR4piz3CjDt6NPbIVsg7HCOvGVjvREWQjfNIcgOSd2+gFe23E?= =?iso-8859-1?Q?v3fnW3bPKnjGLbvs78KKHKRYR/vMHbimRfhSt7iEs4nZx+le/+qDpR0htZ?= =?iso-8859-1?Q?tynFzJiPzFNHx7lZFP+bmEFdggDtdmu1WAxeAD/H7gztC7lR3jBRQY5OnG?= =?iso-8859-1?Q?/4QicKN8tpAzlEnuqCiQOk8qKEJABTgmBWWCmSpemIIaNJ6qD0DhGVY0nJ?= =?iso-8859-1?Q?hlL9Pn2BO9reCznyt2tyMTzd2KKQY5yORHxHNbahyejWNySbXoTyS2i4/l?= =?iso-8859-1?Q?Gj0mIQxdDUOH6Wmsfq7SRuN9UZkK4lg6mVRGupQH74fNPuP5cMVGyp4GjW?= =?iso-8859-1?Q?N9EYSNkIQIoaPnAsHtbo3Ks4vM5sKaagaTHANK0VnWn0IGxdFef2T4eiD0?= =?iso-8859-1?Q?Ew9CY0oVTXOvbZsjItBb8Y12ibrmfCwuIhgVstTzwdmckYVZ846WFnS6g5?= =?iso-8859-1?Q?l0tkqgdEr5EY+HBAS0hcjtMZYit7E4SbQWa+g7hGF9U8eALgWRoWla+4Cz?= =?iso-8859-1?Q?qAZwZ/he1TvfeWM/Ep2Wuh8Ck2exbXnte4BUe3pxCBOF5hVN69npaM/eEP?= =?iso-8859-1?Q?s5byc81Ehes6u8arOVzgQDBtk+1AhiIFFfQXci6ANKeVTpWiQX/mwXcBn3?= =?iso-8859-1?Q?tVyjtIMAxeGdu+sub7LPosVKXkuaqCtvi4sqns1NlCH1RAA0M1AabHPoJj?= =?iso-8859-1?Q?Vr9CcUwJiinky6i1/TlJWEOQm+Nm0Ei7d6Aw1RfS2VoeUZucV0YH2iGfdb?= =?iso-8859-1?Q?8KIdJft88NFtPZVFjwgy/D9CIwv115p+N9YAwo996rn2FsFCoxU15b3Quw?= =?iso-8859-1?Q?n/zXg9X5aVxHcR2hwIk4dR0oqIIETmoqm8PAkzPS2irFU+X0YN7FVE9g/R?= =?iso-8859-1?Q?+1GQa0G5x1dXXYsvoGiazThLGf0tXabsJl4G+esDkYW+7+jcEd0l4UqnBE?= =?iso-8859-1?Q?KWgxyUHLt2T4WBLJv3o6A609eIZZqKkPXDJNP5CtI=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 56a3c4e6-f4df-4cb3-6d61-08ddc0d2ba5b X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jul 2025 23:29:05.8620 (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: IA3P223MB1576 From: theodorejb@outlook.com (Theodore Brown) On Fri, July 11, 2025 at 05:00 G. P. Banyard wrote:=0A= =0A= >> On Monday, 30 June 2025 at 10:26, Nicolas Grekas wrote: =0A= >> ... =0A= >> The latter, cast-from-bool, I think they're all useful improvements. Whi= le most likely harmless in all the specific=0A= >> cases of the PR, doing e.g. an strpos() on false feels hardly legit. I'm= therefore sympathetic to making these changes.=0A= >>=0A= >> For cast-to-bool, I'm WAY less convinced. From the PR above, explicit ca= sts like "return (bool) preg_match(...)"=0A= >> on a method that returns a "bool" or "(bool) ($this->loggedErrors & $typ= e)" are a clear downgrade: it makes the=0A= >> typing PHP just more verbose without any real benefit. That doesn't look= worth asking the whole ecosystem to fix=0A= >> those deprecations. It is especially hard to see this as an improvement = when comparing to using the same=0A= >> expressions with e.g. the "if ()" operator, which doesn't need the expli= cit cast (and shouldn't of course).=0A= =0A= From my experience there is a very real benefit to deprecating both cast-fr= om-bool and cast-to-bool.=0A= Let me give an example of both.=0A= =0A= Recently had to fix some legacy code where the result of `filemtime` was be= ing passed to `gmdate` to format=0A= the modification timestamp. `filemtime` returns false on failure, but this = is silently coerced to zero=0A= (a valid timestamp) when passed to the int parameter, which would result in= the script continuing with bad=0A= data instead of halting with a type error.=0A= =0A= Cast-to-bool can cause the same kinds of issues, which are sometimes even h= arder to notice. Consider the following:=0A= =0A= function processArray(array $items, bool $hasCertainKey) { ... }=0A= =0A= $keyOrFalse =3D array_search('my value', $items);=0A= =0A= processArray($items, $keyOrFalse);=0A= =0A= It's very easy to miss the bug in this code, especially since it seems to f= unction correctly as long as 'my value'=0A= is not in the array, or is not the first item in the array. However, when i= t's at index 0 the key will be silently=0A= coerced to false and the array will be incorrectly processed as though the = value is not in the array.=0A= =0A= I believe deprecating type juggling to/from bool will help avoid creating b= ugs like this (and likely=0A= surface existing ones that should be fixed).=0A= =0A= Kind regards,=0A= Theodore=