Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127554 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 745F81A00BD for ; Tue, 3 Jun 2025 10:29:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1748946468; bh=6pQtY8pTjZfqNsUIakCxBv9bNhlL8cm9eTSPh9996vc=; h=Date:Subject:To:References:From:In-Reply-To:From; b=NAhEOVN1eERpcIcxhyX2CkVGIjqttcZt6Br+5mHqmWKgFolmZOvb13y8JQt2G0O1k EzXeNSA6xpw5PYK5juzTmor8124lJO13F4dxXLWAHiA8XdzAA1VyGmzO/838djIPGx Z4XEFaXenMFZzWuRWoRWmArAu+LsovvUYPvqyyExWF0UoU9phVyNH/+VntIygynKDz J6qgtWqnK1njuKWaBlPiwoz7cCvGWG4tWntAoFQ8uTceEaa3VB8JBDiS/SRukz8rC4 iNSz0rTMoAammZ560terIypA7XbnzJOAcUwECYqIYcFHj/vx4MbSRH89lGGDeYbvM4 ddrm7PDvk1qKA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 65DA518006A for ; Tue, 3 Jun 2025 10:27:47 +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.1 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_LOW, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,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 mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Tue, 3 Jun 2025 10:27:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1748946579; x=1749551379; i=cmbecker69@gmx.de; bh=xVaNB41xw9wCIKTmcIbruuX6sUUir1HDMfHRZBVtK1o=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: References:From:In-Reply-To:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=l3ShvlFtFrpMrhAj5Wg4Id5h0zpPg/N3taoy7+5z8sKkTMxSPXcEWlmXJB2oEnrp QyT1ka3JEACB7O1ujj9HCuVsi7eeMfFuKRfiFyDnWrJDNpUCPl4qfvN4omgXx6tmf Vj3+FI3SqqujE17o8Nwf0WqIG+UAlmE60SjQFWT2rFCIauhi5w3djfFexeOa4J+BU TvsljPU42hgBsS0OVpHLWgEv6H8Pvh9ULatkm3QcBTavginRYWEnl/urfoA2Tc5V+ dO4JkbTXxjvpBs2NBEzfNq/Qvw6jgkIN0O1IhBhMxpU8cJx2T/aKFWf3bLGu6P+Zy IcaAIvCZNqEg3K0x/A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.2.130] ([79.251.206.55]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MPXdC-1uYzpZ1idu-00KkKx; Tue, 03 Jun 2025 12:29:39 +0200 Message-ID: Date: Tue, 3 Jun 2025 12:29:39 +0200 Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV][RFC] Deprecate type juggling to and from bool type within the function type juggling context Content-Language: de-DE To: "Gina P. Banyard" , PHP internals References: <3Yl0UGauXmKqk7s7Hqbv6iaXru-hZHf8Wj6VjwwihgRSaqZo5EZ2ndsOle-ae41C-lvnirynWt6PpuD7UJPL0zPCw18QHFE81Eb--fiiEbc=@gpb.moe> In-Reply-To: <3Yl0UGauXmKqk7s7Hqbv6iaXru-hZHf8Wj6VjwwihgRSaqZo5EZ2ndsOle-ae41C-lvnirynWt6PpuD7UJPL0zPCw18QHFE81Eb--fiiEbc=@gpb.moe> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:NJGGvpvotP9cNGnsIC52jh+ieZqvWjol9N2rdlyTFLcYB2fAN8d hmfL4oIm4GqpvsKJlGUcKMxinTBsHKfduKV8Ia4RLjudkWAwCmB+CHZisAkl7PlDtPfqP1i 6Au0kep14LSgRKZ7Dpf0zZIUjtAGiL7ejnQ/2EzBFbk0sYxffaVmia5fN/pGmQZIQtmWDLg IbV+5yLzHNKiSo9gh1Tgw== UI-OutboundReport: notjunk:1;M01:P0:wQe/aV8aGzE=;cG7Lv9bc+RdUIDwiGzkR3y2VNds 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 vFtKMy7 From: cmbecker69@gmx.de ("Christoph M. Becker") On 02.06.2025 at 18:11, Gina P. Banyard wrote: > The RFC proposes to deprecate implicit type coercions to and from the bo= ol type for other scalar types. > This a "weak" mode change only, as when strict_types are enabled none of= these coercions can happen. >=20 > Let me know what you think about it. Let's consider a legacy (PHP 5) function: function foo($bool) { if ($bool) { // something } else { // something else } } Now the developer wants to add the missing parameter type declaration. As is, even without static analysis or a test suite, they can just add `bool`, being reasonable sure that the code behaves like before for scalar types, and only fails for non-scalars, something they may be fine with. With the suggested change, they can no longer, but would rather have to inspect and possibly "fix" all callers. Since the latter may not be possible (perhaps because it is an API function), they would just stick without type declaration, or use the scalar union type. In my opinion, either is worse than the current type coercion behavior. Now, one may argue that there should be no boolean parameters at all, but besides that this is opiniated, maybe it's the reason why the developer wants to add the type declaration: to be quickly able to determine boolean parameters, and to move away from those over time. So, besides that the proposed change would make it harder to bring legacy code up to date, it likely breaks a ton of code which already uses `bool` type declarations. That BC break alone is a show-stopper for me. Generally, I think that any attempt to unify strict and coercive typing is futile =E2=80=93 that ship has sailed long ago. Those preferring stric= t typing likely would not want to compromise, and those preferring coercive typing will be annoyed by being forced into stricter behavior.