Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127417 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 284E41A00BC for ; Wed, 21 May 2025 15:27:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1747841117; bh=iLr2YZWHB3OJcTBgeQngFS0xquYL4pEfIHakWR1fFqE=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=FccKB/m7csz5Ia9vmOuUEGxVjMUnqbseh5UTItox0X92CG4CnqerFuN6qcrKyq1Th vZ0v0Nrtau0R7ifkpmomMKi8azL8/l7/aOdTbqF8Qucn90wxzX/5ouH1rh4ZYIMub4 Ia1qiNBqAjmJF4WzGGS0aNMzY3QtFBreb9svESy1YWxh2zdcNe+RWC0rYdgJ1s1R51 jAbYgrFqQsnsExsd6FBfgrUD36ejE+/0jIOoQyrParPYjM1KohMD/0bD0gWLkki/bS vk1dhgm9siiJhdVhTL/XiDy0M1DIBIKPnzcTDNaoPSLv+xsFtxRFzEPpkKR1rruQtM Mi3KA2ONVDYIw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2B4A7180061 for ; Wed, 21 May 2025 15:25:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_05, 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.0 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10olkn2097.outbound.protection.outlook.com [40.92.40.97]) (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, 21 May 2025 15:25:15 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nVmOGegnVPWDm5gTO3CcgFDljlMN7tEgSLAgA5YtPCxQWIFHCmmbDYcqJueSow8OqPahotFIYQYQvMObD7sIURfT5WG859RA8HMSfUrRzU1rjXnZChygSEZXJQWo5VezPyLRstMBDEVtBmudVZjdSGW6tIkP3QzxiHfI7sjgQDz1LhXinxpVNpbGDh6bs17MG03S5NPSjh4mP3iXjHOG9I+6lp1SWxkvO0BOFbEVSpmWeIc2LgsWvMRqAQwgu4JSWDjCIhTy3q9+gPLgpCdXYfIebAQhJxJJ1xO+XjcnA1f3fOIYBGvED/FXEieKcGC1E5C5PflDGPWgHvQHDqG5cQ== 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=H33JT0Z8gnPKSxZdyCDJz5bQd/D2sPPrnw+QO8umwjs=; b=YgKeGO1V7jnqXKAtvZinU0Gb7chGrPOJUrRwXvUNOQL4dUCMqPNqBIxLlRUR4bBs4hUTSaQiqIggtIP6CSMwzrBTKz9gM0bQtX2JncnOJ51ckHjkcJInsiIUX2jx75TGrj63l0/57c4pQvwzaEjNPM34qBAnQSlzict6mlhc2X4cpwPqksAHr+VIyfJZqi9yP7d6N/u9ccAlrzmojoVjLsSi5Ncdkmk8Zpfo1vX7NsL/t4Du729Uhw5kggueGQfDxe8EhONKrcCzPzGWhkQP7guVnohzQr70FvChjZL+pTKIjtXOrka/Vs+xaxu6lTMhkeIRo2KuGYuG98ccjNUHUQ== 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=H33JT0Z8gnPKSxZdyCDJz5bQd/D2sPPrnw+QO8umwjs=; b=hVbE7Kb5IlKTAOgIwIHXHu3QyQgOyA9/o4+1YJGepeiLJ/xBNTKWJkewPgyysh7v0Uyd2TFWSKaHWW6jGkZamVMxAxMIBW09A9FXH4GPzEVTTWpCZ6psMaS12HLMjEAZJPMthp592ZjgJeZkJOda8nf+GhKLV/BinpkpICZBB5S39+YzB6Akp0t3BInWGMN0r8Ye8ziAnCWD4zFM0tezS2gdTkFkvDYwocKRmtQmRICAIuoNn/FxMuKdEdcBGnZuhB3SldF0lgVvJpHa5BKJ3NXQiegS9UC0e9hafz0J65uPEc9J7K8YfmHT7PbUiNVMSknmCkps0y9VKmc7l+YZ4Q== Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:5a9::14) by DM8P223MB0205.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.31; Wed, 21 May 2025 15:27:22 +0000 Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::2e7b:7134:b7fe:e849]) by BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::2e7b:7134:b7fe:e849%6]) with mapi id 15.20.8769.019; Wed, 21 May 2025 15:27:22 +0000 To: =?Windows-1252?Q?Tim_D=FCsterhus?= , Volker Dusch CC: php internals Subject: Re: [PHP-DEV] Re: [RFC] Clone with v2 Thread-Topic: [PHP-DEV] Re: [RFC] Clone with v2 Thread-Index: AQHbyKub/o4d+9pfyE+KjmOJcRmhMLPdI6CAgAAI4r8= Date: Wed, 21 May 2025 15:27:22 +0000 Message-ID: References: <2f30cae4add309021e18d0f359a1814e@bastelstu.be> In-Reply-To: <2f30cae4add309021e18d0f359a1814e@bastelstu.be> 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_|DM8P223MB0205:EE_ x-ms-office365-filtering-correlation-id: b671bfb8-2584-48cf-ea01-08dd987bfb6b x-ms-exchange-slblob-mailprops: YfhX3sd/0TV79KLUZXH6jYsApOyagGvSIvLIypKOnK5i4wvjQ3AuNzhpU3q5UezkUCIitqp7lyHkLDtv8puZX5OcLFCCItxn4PfvG0HurEAIkoXCcFAuFRoiJgnhN4wjeixBnxTE/094ZV1uOLF/XJu0iHVANGmgIH/ca/AqcPuuxxNEM0Olf5OEFbRvbqh15HCSckw3uk2k1iBuLsOxp+FJqLYB0Z9qiVyYk1UL4t0N0QbN+RFU83eq/2+iiyHFKIt6CFFq8A0Zb8la0svOXac3XbjntSamwEbb4B0MjJqOokZ99q4oaeDZHjrf4kg5yl01/rvLPf8eID3wnL0Qtzd9xA2t5DRa0WZXZdj+HsuNCMXAEYiX004g3HnHF5v/vBayjihjn6rDOX8T9xwxyb/cYIWVW1D3ZJuWKBdozY+IwtvOOJwSyzpa2caSqEkRNR4OmE+NGYaxb/BhX+yA8sIWpUa2qRCuyBoGGXYETCFza917GwHZt7ynAPZ1WLIbk2rQI9Vj9w7B7Uh8YIkWQ/ELlQCX73mbi2VMV3k7LKtMS5Ll3fMuR+qKaRwum7H65PtrtctlCoKKu6g5jSYc7x8tkb9h+neLthj0VVJ+nkGQ1f8AuhpARpRi8lcS+jd/Euum79W52XZ5xcQeOC2tMUcfax89OLEhCAi+wDwwrApGae5UkEX4s9t1RA0/GnuLNZKNIKdry6QfF2Yuszu2cdjmIi5JenQO15I8qxsLipuAQepN6fHGisZKGXJ8ZoVmRUT12t7kV47szqIz51Uv17ZBQau7l9VpZCppmfjc9jg= x-microsoft-antispam: BCL:0;ARA:14566002|19110799006|15030799003|15080799009|7092599006|8062599006|8060799009|461199028|3412199025|440099028|4302099013|12091999003|10035399007|102099032|1602099012; x-microsoft-antispam-message-info: =?Windows-1252?Q?u3OuhNuA6D5u9WWCfphPXp1R77HdiCcPoy5ODFsdSnL5I7MKoVC+8PGD?= =?Windows-1252?Q?0mt9eHc5qSVxzbkE5L5vX2gxqA1l0QX62dKShgrmSHCWmsHJ+7eEVFWb?= =?Windows-1252?Q?2IU/CCdHmsNRWXObsmMAp9XrzYAgQ/0IfrZH18PV9riKz+D8k//Rq7aF?= =?Windows-1252?Q?yM8LpJdjP+Ocv7TyCm2kDkv48AW8TtA8nnIyJRkCP8R3GGzBUHXOoMSy?= =?Windows-1252?Q?nV2jK0E4pXfULvonfDCVkYh7chuGIDj63vWsMM48/lN60YaKRRZMiZax?= =?Windows-1252?Q?n/k22pfslGkTootBLcZGd6p8pL/U6cm5ZNTY4N2WN+8KPyayYGETd29/?= =?Windows-1252?Q?smvdPfxhZUxGL0NfQtPFY4R7KHsApN/B4wiGAPux1FNONJrqVEgdotOX?= =?Windows-1252?Q?tCPEFeZl4GR87ZU1BQfXxVYmpztQm9c+xL1BSSquo0pTYstuHReHvzxR?= =?Windows-1252?Q?pbUopG72h0mtKMqUi+rd0BphLv4lNn9NgV+tJvSY0YSAZlmFyV4uWN8q?= =?Windows-1252?Q?j9ym5WKi7L0Qo9UejW5TZOy3e4vgb84E4meMOOld2bc5WiPsjYjNIFpM?= =?Windows-1252?Q?01ce5FDLk6EHTvw7s/Cpd0dk8ckCiKO6su7xaqWLhtcpfW+yTD3Nk2rP?= =?Windows-1252?Q?gkBW5NdlBC6H9bTLJp7mAMOd4OsLDmwBQnfzs0b+ZG8+oO/2sWH8Ukc4?= =?Windows-1252?Q?Qqr7UaOMeC/2TopM4ei6SEB4puMc2+D1n7OrVqLFTWyMI24o+Ru3Dd32?= =?Windows-1252?Q?C+zBL6TrkOYSMwlxZoDcxyioizde89lvLFjGOwl7t0d8cHuzkh3gVmtI?= =?Windows-1252?Q?sO5qt+2ngvoubzpGGr03WxtkusCeAliLI5zIND3IaMT3hrdtllWPpOaj?= =?Windows-1252?Q?RJexe2kEk4LVxcC1+osa1AVCygx3+6aKvZ10G1kivD06aO/HGMJLTEwQ?= =?Windows-1252?Q?fXIr1CWmHc3z7v8FulQ+OayfaYSA0tymKIthLFHPNnF1/z0RkVcBN4xO?= =?Windows-1252?Q?sH/J/nvlYh/HrACUhdef0nlmyqXa9s5q/PmFCsUuQM3YzT+H03/kSYHy?= =?Windows-1252?Q?JkjMggEF2/NS8tncpF/C85oJifywHF7gyR+JTzWOi4T5ZAmztWf3nyUr?= =?Windows-1252?Q?iNg8s9+jLfqKspQKek0TWJY0NmkebkWdqo8mBNpdZmzpd2dO6oq2G7Hs?= =?Windows-1252?Q?/xDCo2kBi4PXL/+EQtpGQVN2WiJXH4ze6KRR+7uHaLRBH51h4LbAZZ/i?= =?Windows-1252?Q?9djyc7dcE/Nv5n4I2umaNhp7/1147YH5/8Zi+uUDmTVr2YEJIwnULL4A?= =?Windows-1252?Q?fyPyS/MduMwRJS4dwP6HTW4wqBVetwjfoK0YaTksXuqMI9YJ02yK7TQw?= =?Windows-1252?Q?YqH4oPpdEmHC00Ltoz1ARyIWgCvUAu+09no=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?KNx9CVzYGpohy0Cqc6oA6Pbm/bL4ygL6SZn/tTkkhoAIjnv/xdqVWIvo?= =?Windows-1252?Q?Mmf9kDIzA1zRKcVehJDAOEfSDcEskxGzzWWZBmkpcOlWujM1oUYGVOaM?= =?Windows-1252?Q?dlcntlvtylpZwQc+qZ1c97lrbiv7+eQ+V+kyggtUq/f88YKE/uvn6FeP?= =?Windows-1252?Q?oy14rdlNFSINjFTiCwStzqSud1tqTKBW7qJ7vxJXtrJo7id5z+jnWj+6?= =?Windows-1252?Q?0T+kH7zhxZkMLmJq2b7nZSuqzu5W3S3doljfyIS7YXUQzEsmNuT+DotQ?= =?Windows-1252?Q?EsL5PEMS8z2MuipX42YPMBloPQfKiXz+Q6YRDyncQaYvGWDW1DSoKa2f?= =?Windows-1252?Q?o1qqz6kJ4Qm3MdUSiwwcGnvRb/9wLuBFRFAnD5Dhw1eXnsxrM2h+Ncd4?= =?Windows-1252?Q?KEMvcLrcykD35Ew6NUOKzLSECRR7XBFBxyPlypSZVGMn/eLjJYdJUi48?= =?Windows-1252?Q?hA4z1WeIDX+kQGGjs1HVeBKQK45Dd+UFnkFjgpJ2/9Df/aYPRILsm4e9?= =?Windows-1252?Q?3ZXPEADmm9NilbDLgZ5/xKJ/Nh9/gzPG1ltJW2YJXjBj0jX1cVLdEDqq?= =?Windows-1252?Q?YxmmT++TmEVZuqAITODeIPe56Cwio5K0nG7YFx/P+CwefMl7PwXt13yA?= =?Windows-1252?Q?fSWuX9uiyK7NhPDh3ZBrXstbhgCcIZ2bGenn3t/WyBsJ/hQOYmBHOVXe?= =?Windows-1252?Q?nr8sUx53TSUQuOzwg+xx1dX4uAYeSujVmiBcsskDHkn0n/OOOL08Qu61?= =?Windows-1252?Q?7sKk+1YNN97dZoApNsWVRTLiUcOng/VlztG6CZcr/7OfVky2XRqcj7T8?= =?Windows-1252?Q?A7yw9yVkhNJRDHxy8aDEeeIPJn3UkeRPgWWRbxEwZAwu9MzGUhP65Cu5?= =?Windows-1252?Q?1PEAYIBwb377foQuvauTNlgOUD914yllctIgRb3FcqCbYlM4GE/l2XvQ?= =?Windows-1252?Q?KLWJ96TzPK5wIacOAPK0j+4itEdfGx9Ehk50mG+7sSntbP6/Wh6cJAbh?= =?Windows-1252?Q?vFttxrrRblX4NYI+cciKDnDwGYeMFTgeChcJy4hP6xCaGJQPv5V7Mt3r?= =?Windows-1252?Q?5mOQgyx0L41fHF+jmNqLE3ada4odADFq1RdIfBPyG1jEXI/IAmaLCDGJ?= =?Windows-1252?Q?bmwEdfKr0Qs8LbVNulCWuPWME8SU5Sp2Irrox9TbwyEiouqHEo1mgLPx?= =?Windows-1252?Q?DKYUtWRRHI9UfsK2UfN19CshbXGxW9XLKPUxUYLqn1Tgtxg+tqjK0VcU?= =?Windows-1252?Q?vv8qjQ21r5HUMtc+sOGEvw6tTGYXz5V2BScbOyGRlOJW6aIlGPlcRU7Q?= =?Windows-1252?Q?tvTLLvwOR7vOTSvbsqJFejHISug=3D?= Content-Type: text/plain; charset="Windows-1252" 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: b671bfb8-2584-48cf-ea01-08dd987bfb6b X-MS-Exchange-CrossTenant-originalarrivaltime: 21 May 2025 15:27:22.2508 (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: DM8P223MB0205 From: theodorejb@outlook.com (Theodore Brown) On Wed, May 21, 2025 at 09:13 Tim D=FCsterhus wrote:=0A= =0A= > Am 2025-05-19 12:48, schrieb Volker Dusch:=0A= >> We're still looking for feedback on the ...variadic approach to the=0A= >> Syntax:=0A= >> https://wiki.php.net/rfc/clone_with_v2#open_issues, as we only got one= =0A= >> reply so far on the topic.=0A= > =0A= > ...=0A= >=0A= > *Some* property name being completely incompatible with =93clone with=94 = (no=0A= > matter how the first parameter is going to be called) is a limitation=0A= > that should not exist, it feels like a feature that is broken by design= =0A= > and I think I really would hate it if the documentation of this RFC=0A= > would need a =93Caution: It is not possible to reassign a property called= =0A= > '$object', due to a parameter name conflict=94.=0A= > =0A= > Adjusting the signature to `clone(object $object, array $withProperties)`= =0A= > would not have this problem and I don't consider the additional verbosity= =0A= > of an array literal to be a problem. Static analysis tools already=0A= > understand array shapes and would need adjustments either way to=0A= > understand the semantics.=0A= > =0A= > From an implementation PoV a regular array parameter would also be=0A= > simpler, since the implementation would be able to simply pass along the= =0A= > input array, whereas the =93variadic=94 syntax needs special handling to= =0A= > combine positional parameters with named parameters into a single array= =0A= > that is then used in the cloning process.=0A= =0A= The more I've thought about it, the more I also don't like the variadic=0A= approach. It seems like a hack to try to get `property: value` syntax=0A= for "free", but at a fundamental level the API doesn't make sense for=0A= its purpose.=0A= =0A= Not only does it prevent setting a property with the name of the first=0A= parameter (with no workaround), but it also means that someone could=0A= call the function with positional rather than named arguments, which=0A= as the RFC admits "for clone this is usually not useful".=0A= =0A= Even if it's slightly less ergonomic to quote property names in array keys,= =0A= I agree with Tim that it would be better to change the function signature t= o:=0A= =0A= function clone(object $object, array $withProperties): object {}=0A= =0A= This simply removes the issue of not being able to set a certain property= =0A= name, as well as the confusing positional parameter behavior.=0A= =0A= > Syntax-wise there might also be a middle-ground. Similarly to how this=0A= > RFC turns `clone()` into a function, the `array()` syntax also looks=0A= > like a function call and would naturally extend to named parameters.=0A= > While mixing positional and named parameters would probably get complex,= =0A= > allowing purely named parameters would trivially be possible (without=0A= > any function call overhead). It would also allow using the=0A= > first-class-callable syntax with `array(...)`, something I would liked=0A= > to have in the past. A proof of concept PR is at:=0A= > =0A= > https://github.com/php/php-src/pull/18613=0A= > =0A= > Combining named-parameter `array()` syntax with clone taking a array as= =0A= > the second parameter would allow for the following, which might combine= =0A= > the best of both worlds?=0A= > =0A= > clone($obj, array(foo: 1, bar: "baz", object: "this is not blocked"))= ;=0A= =0A= I really like this idea! If it can work without any function call overhead,= =0A= it would enable more ergonomic array creation not only for `clone()` but=0A= also in many other common scenarios.=0A= =0A= Regards, =0A= Theodore=