Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129875 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 834511A00BC for ; Thu, 22 Jan 2026 23:25:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1769124347; bh=luzxDbVhPrN8Ut+v8GUXKQDfXoyOTWwPPpmGFu27FhM=; h=From:To:Subject:Date:References:In-Reply-To:From; b=HKmKP9awrJGJKYhtmx/t7JrHh+wQhaF9o3b5t8UY59IDt8KpjG/lQOaJKkRX00iNJ y3vnBLPlcP7wYnmGx+wL7TGZH/Fi6sFJxkAwbrsXl1EF7//ChSuMWlwlzxlf45clel iipNK8okQHIshrIl8M6aGvt0wQOzM9Zs2QOCKsW2VoEJw9wSpwVTX4jEAMZtnkLfj5 ZGlt5mQVfob4lMTJV2DbpB/riBoHs+v2Yy4q8jjSatHOc2rzXv9u31E7C4vnPXp6Ti RlVK6fJeYif+haE3Tu/m3K9iTY6Mp/p37fw4Z/+hT7dmr+skAZcsPjPjWJnVQI0Csy pPJaclpKWAYTA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 5894A180039 for ; Thu, 22 Jan 2026 23:25:46 +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.6 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_50, 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: No X-Envelope-From: Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazolkn19010016.outbound.protection.outlook.com [52.103.20.16]) (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 ; Thu, 22 Jan 2026 23:25:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kINvoeex+JkUYkKjaVXWV5OO4FlPbHu5pVrJjvtQASBxYtIvSh6DYHPaoSHqCvBatO6R8MI7aNn6cNisVDYcqNxQeQI8KZ8ajzp6wojVjnjOFbIQ4Vn5QbisSQIYo83nU6qZjMYk/AWkBxOUiMQKwCevz8+1pHH3yvgcS7YExjamKaKpV0u/arm5iy73JL78GfH8lSnacNVPD9K9PGfTRjGXO8DhyfkJdN03a5HaPIVhasSqPlmZwvkdAbfR1/yb7yzEZ6dCNuv7WvOq4OzcyTDIJWlQPijmXvdURWksccRExhSTt7OCFGRwJCtCxn4evhY0qckZMfOHXtrx54CCbw== 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=llXWXKsgbQL9OQhz+Z1GCPEHPUQysnd22ayIQThIt8U=; b=KMhuOvxFDTDqsRGdKhmk+ChjKevgUi/d5rcZTxR1b/OOAHuH+St8grgWYMBCBw5iulBDgYcUqkMFdlJWd2TTrnS9nA6GsBLJRY1otu302saFMYMr4rR/cAe5wXdmC7+qgNKkSreQgT1FDzxtPl6/girZ+olmkb4s4HChUiidzMZjYzi/0a0U53q7hlEVa79WIQQahmzGZ/0+LfQMSxRj/rnSNYs4vK1BQC4RANhw5CGHeZtghjOKPUIDgSZbnaA+4XsCc5SAxovn+5RLBl4MwJ4rSIr9UY8M93wgq0bcsu2lZ1n/npHfVpvH9cWytzD54Bdnk1lzXCFyJ6f3VTEuSw== 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=llXWXKsgbQL9OQhz+Z1GCPEHPUQysnd22ayIQThIt8U=; b=YdfSnpMTFrg+ckTwLGM8YCCgz/HDxo9ud6UR5E5jIrYO3xzPX4qzNTk4f126AIhjRoe0M7gPGbAzBXO6Z4bgebQanO7suPjff/U+TyWakGmM5s7HxCvNJXSL2ah328nBBTFoCzBguV4e4lzqALUi10l2JJ9O3EsJylndSt8L+soLk2c3blanH70yI7ypC7h2bc7ytRj3VjQyu/PbvnNRcUpkuWFvUG022Xo8TZytqsqNYFokDhM0Z222cGRxqU+EwcTTK8sfBuRgHoHLZyP8EM3ZGVH6bCMFL6RrE0FKWSOzTNcYaXRhUya3HmZpTu8F8DM0GM2IHZ3P5cCChA+H6w== Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:5a9::14) by EA2P223MB0956.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:260::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3; Thu, 22 Jan 2026 23:25:35 +0000 Received: from BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::f02a:f79:cb00:d998]) by BL4P223MB1364.NAMP223.PROD.OUTLOOK.COM ([fe80::f02a:f79:cb00:d998%4]) with mapi id 15.20.9564.001; Thu, 22 Jan 2026 23:25:35 +0000 To: =?Windows-1252?Q?Tim_D=FCsterhus?= , php internals , Arnaud Le Blanc Subject: Re: [PHP-DEV] [RFC] Partial Function Application for instance of non-static methods ("$this") Thread-Topic: [PHP-DEV] [RFC] Partial Function Application for instance of non-static methods ("$this") Thread-Index: AQHci4SOHXoxjkWe4kGGd5AgdWmPO7Ve0Rgn Date: Thu, 22 Jan 2026 23:25:35 +0000 Message-ID: References: <64953ec741a4c6609519e1878ad37b54@bastelstu.be> In-Reply-To: <64953ec741a4c6609519e1878ad37b54@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_|EA2P223MB0956:EE_ x-ms-office365-filtering-correlation-id: 71d6dc9c-dead-49bc-5b90-08de5a0d8b76 x-ms-exchange-slblob-mailprops: V85gaVfRD49S/pS4yJO2Rs6kXT7fKAkguGAUJsskBc95eumv/FabTxgm1i/pJoQTIa0mZc6IJNJ/2dC/awftNHnZkMIt3c+9dG50Kn3l29215ggmkqFETrcMo7577jVtxj5WQE7v7GOsgcu3XrXJXyeANJ5Hz9ZXw6VEzcGx+gPXbyW1Cx6RBWRTWHgwAtwz+BSsgPtYrNpSy1mOehUrHgXwTeolkPYAHEoXTpAEoH9raSzMWk6iiB2nLitMXZN2tGvZrQ+mUYZygXYy1BvaIDD3mEPkMMehEfTLGhvV6IEavNkY8E+v5Haho8T3u01KsBZY0b9zwed6IRvabh0KXWvwOmQnOCxwQvYAlwMykaZ4J6cBnAjiFhEB42ichPOxYTmt7RxqhjNG/FkLH1r0TIWF2HslujRgfPkVKsjjJbG71yVs6zYeaKMw6wsL1HFpeXY++DSq4Oqi/AKIF0bcXXVfmk1wjju/armHjnW54+47+o4PeOjH0Bmo9rvtIeL7fJgV58wsyFnRNa4iPwtOYzLeDajIJoB9XCt32H9GdJ/WE/kfeJOpRYN+hJ0qM6NMyYqrhmgkDSJwLZjBiOVsg7fVNJukoGrgCA8GJhurK2egGdglxqqAUcVVcn2Wh8sYPnyv2Z9PV80VhXqrHzrpgFRDEUAQleZESzQtaM23GE7W/s7iyQtpF8hiiSFLj5ToLOckeUjoLgKLQeFoCbYaC30buUvfpQV+be1LvhtGwJS1q1irrxEK7IWKTvUX119w40Kiq/YsUIXs/0dY0nh3pcapDcGTarLYo05rztvDfSo+QP7oVxGYyHCb/KH5CP+YSK9dIZnrlgCM3M6HX+XwEQ== x-microsoft-antispam: BCL:0;ARA:14566002|31061999003|15030799006|41001999006|15080799012|461199028|8060799015|8062599012|19110799012|102099032|1602099012|52005399003|3412199025|440099028|4302099013|40105399003|10035399007; x-microsoft-antispam-message-info: =?Windows-1252?Q?l+IuIsbDyzqd334y/qcD3qsoeFu3EdUG+zclR6JfN4YrCPwuFFcNb5us?= =?Windows-1252?Q?Kh6PHmAakQDAb7bG8tWRJOaZGWfnbhXYWrm9+fh+dht263BUD4ZZ3pwe?= =?Windows-1252?Q?k41ib66tEXg/HzmGldr0pSeoDtNnXuF1Xb5gQ6F9U24vPzoLx97k13pc?= =?Windows-1252?Q?r5Hef8BJCAKeHTo5EbjjaJB1V3WgGTNcNGSHyOs8alZnBbxEV/xiii3Y?= =?Windows-1252?Q?TTAx99kefVopKfLhpIwgtrJPmImySpl3JpwRdmGCEKlvvTkPTbEGXx4h?= =?Windows-1252?Q?2yltcp17nkSkU+hMiMIU1CGPy2vlkn3rPylCmLGZTLojt6RQWnW9Zr5N?= =?Windows-1252?Q?T1r/K6hi85HYF9nXhvoeVSfMLjGRHW8u1RCYKw+PrBZ9mlOmvxOM3xay?= =?Windows-1252?Q?/VbsMrivGH1LiAA73jNU9qHhU15S/hWEwd0nhkNvWl8DENZ7MQWPEgrZ?= =?Windows-1252?Q?Fb7oqU/cY+sMa5hfZNuemkI4VmvHcq7ttSVkyeG5QGj1D307iEM5mfo5?= =?Windows-1252?Q?kVg0+QXF0D6g9lQbOU3oiL5OsBBjbvQOqzPOG2BhJKwK1VWkp78RvjO8?= =?Windows-1252?Q?P4gwoDMpaPYtiJjRaF0VHymUwxdD+ZV+/EyqSIjROP2+DLCGREzN4Je/?= =?Windows-1252?Q?wLwcOB1GKpSq6JGmlHVgkMCyEGzSyaDeGdwi1AihM1WKNFTppFxVusjm?= =?Windows-1252?Q?cGWWStbE904cpsGa334XG9WMwtYCiayhem2tyKjoXko7ihrcIVYTKtnF?= =?Windows-1252?Q?eRFT6NDKAV0FWhBkChQ10vfVwoO9O76/WFF/3NCHLvaGjTPG4TFq3k7B?= =?Windows-1252?Q?1T/JT3cnnNOqg+eVmEF3Qncu8zhOUj/AtK3quG+flvH20ogNwIJ42CD+?= =?Windows-1252?Q?cLrqTIA/04qMaM6kAaP3knF7bHH65Iar6LTfWFD2/VFgLqvczJyvG1jx?= =?Windows-1252?Q?KeM1JaYfuL588t4APSBRw01t0sABvN2dnPpDBLlfi/j1TnWEhR0ShTle?= =?Windows-1252?Q?CKfiB7AYW1dCYLAozyhiBXBodKYrA7vR4DRHNJfifI/nDMKedahfgA5X?= =?Windows-1252?Q?eRiANZbK6x1hPdCuM5dvbgeq2Dou2TVGs74aFFUMLzY3974KImRoZAO5?= =?Windows-1252?Q?1HCBUk8qODsLB04sNYgClFxcESq0Ah/VvWhS3BUmaCMpfO4unMOdBCv8?= =?Windows-1252?Q?VRERbvUn/pnqEz16avIdozBWEAH6F5r3v0aSXIx8PP48WYb/JV9ucCwl?= =?Windows-1252?Q?17j28yCXvyb+X7Gd8J+VZgCpGsjUkSNvLjhX37SneL3ISbMRa0HbiQQt?= =?Windows-1252?Q?OsnPKDtaMvVqXeY5XUpoec+4DfyOjQcQS8TsGJxEPmarDASFTLK6mg7Y?= =?Windows-1252?Q?mtCkfO0vs3SbrsOX1xPbxyLQ2Ml9iw2QZqsq9/2IK2XoYEW+f/26jO/x?= =?Windows-1252?Q?GPlOtD2vwZrbk2UGkf3xnv6R+rcPp/3D2Hy/MPJ5tPZ3En67xUPXJv8q?= =?Windows-1252?Q?g8J1nfn2?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?RyFvO4U1tNhGioN3DTI+NjdFIdgcBZ0hC3OgSeSAEMY91DSMfOXV9cb+?= =?Windows-1252?Q?BncFTr1cvqWy49OoOOmuwBRkU9LukjBxvAKvbnVVnvbfP/lkdC1xIIxh?= =?Windows-1252?Q?vTjuPZ9+8WTgnupK4m1HhHgmDQ5uNMLehRnRDE/+lyj7pm4jcWKVucyu?= =?Windows-1252?Q?Jc2rBruBesow5GVF9bqrrLmylZH4CPHd0n2uupWZ3nDW+WQTv0zqaSWX?= =?Windows-1252?Q?EgyoOyOfmCB3c+SsRzyUiuiEF7n4XGGrGGB78ZVMvuOxU/L+b1uO/pyc?= =?Windows-1252?Q?T4iZO0RWBI3vxKgWxT7qIOhL5p9blX6NU1i/geUlPb/lbhmYjUVXIq/7?= =?Windows-1252?Q?NgI4mCXjyMNLEJUk4/UkOcU81b9CEXhiZNWxC/ju2gP98PqjBD1yYAyc?= =?Windows-1252?Q?p3ZimkwrK5Mqkws9I/fkIoL6cSQT0+HMkX0znEzRaCHBc2keRdWeIfD9?= =?Windows-1252?Q?c1xThG/vr0EbT/nZID46QfBKgKlU+RsoX2QMm2l0kwYaf7UZzdP5Gdi7?= =?Windows-1252?Q?h9ieHAnm5BkImHOJYJshQMqm7Q7LH7S3k23oI+0IpV33nEL5/Thb9+FE?= =?Windows-1252?Q?N03UxA8sxyZhbyD+AGldY2DcxVaLonovj8iUUgGK3KsMOfnVV+MfuMXM?= =?Windows-1252?Q?DpnbFh/yL+EADeZhCCe9ldJKtmWKQm/SyHKwwFyqx9czwdsF9EInhBiJ?= =?Windows-1252?Q?LTZk2Ia9oYQa/l/vAuA4LBQb9tLEBM1qQriNfM+4LG7pjkSPFgesOAyA?= =?Windows-1252?Q?9yfbHJmloeUu43JwE0CGF4OwaVaC2nLrPJ5vQhjT77CBvGoOr1SwcG75?= =?Windows-1252?Q?+X8wOrGYsjARHP82oZxNE6jIfVi84aKqFyacDIo9+7v8cRIAPxQ2jgBq?= =?Windows-1252?Q?Gzi5rkzt2kUyUF/J4kAjoz/prqxbAa6vxSGi/A46TWFTpUoTfJtfkqd0?= =?Windows-1252?Q?nxErPEW6qOl+lC04H1vI5KeXsX4f7qi1W8rTT9EoiQTlhUxcJCch8Ka8?= =?Windows-1252?Q?mWGWTQQmjpl7EEEgsZS44lhR3RyxlUsWaEB7DFjV42pX5z2gEP1nGR22?= =?Windows-1252?Q?ZS1PdUuQ+gKaxk8KNEtWWWJfat8I9h1kyv5+jLomPXR6ksNaPg0BHI8s?= =?Windows-1252?Q?b/CEGIkedj15Soq9WcRdkWw4uxIdCGxt8v+aIxuRddo6U6WIvpAtquaT?= =?Windows-1252?Q?yHCcA8KwzbFBzdC5KJof6koEfqO44Ma4T8AVUFNGc/DAMlrnZJgzudgN?= =?Windows-1252?Q?RxWpR0o7wpaLISCH6vK2a8JksQAFLKOK5F8DYzp0UTld5QSzPUA+EePV?= =?Windows-1252?Q?7R9Vl7vQ00fR71jnwvyqLiLNUdxqyu/HXdo4+/OQZ0C6WuwK+xG2e3l5?= =?Windows-1252?Q?4wE4O2UPr6tYQFohwuu2aBkZmb9QMLV6DATCJNhTEIQtUzinXg5Vdp8+?= =?Windows-1252?Q?WVOlu4gpO6J3Kl03hldv9hjRlzzrQrA37pe38k197aQ=3D?= Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Precedence: list list-help: list-unsubscribe: list-post: List-Id: 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: 71d6dc9c-dead-49bc-5b90-08de5a0d8b76 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2026 23:25:35.3564 (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: EA2P223MB0956 From: theodorejb@outlook.com (Theodore Brown) On Thu, January 22, 2026 at 03:50 Tim D=FCsterhus wrote:=0A= =0A= > Arnaud and I would like to start discussion on our RFC =93Partial Functio= n=0A= > Application for instance of non-static methods ("$this")=94 which is=0A= > intended to round-off the Partial Function Application RFC that was=0A= > accepted recently:=0A= >=0A= > https://wiki.php.net/rfc/partial_function_application_this=0A= =0A= Hi Tim and Arnaud,=0A= =0A= Thank you for your work on this. However, I'm struggling to see the benefit= =0A= of this syntax over short closures given the examples in the RFC:=0A= =0A= $dates =3D [=0A= new DateTimeImmutable('now'),=0A= ];=0A= =0A= $formattedDates =3D array_map(DateTimeImmutable::format($this: ?, "c"),= $dates);=0A= =0A= This saves only three characters compared to a short closure:=0A= =0A= $formattedDates =3D array_map(fn(DateTimeImmutable $d) =3D> $d->format(= "c"), $dates);=0A= =0A= Furthermore, duplicating the array's type isn't necessary when IDEs and sta= tic=0A= analysis can infer it, so short closures can usually be even more concise:= =0A= =0A= $formattedDates =3D array_map(fn($d) =3D> $d->format("c"), $dates);=0A= =0A= =0A= I also find the use of `$this` as a named argument confusing. It makes it= =0A= appear as though the current class instance is somehow being passed to the= =0A= method, when this isn't the case.=0A= =0A= =0A= The other example with Symfony Form's `ChoiceType` doesn't sell the syntax= =0A= for me, either:=0A= =0A= 'choice_label' =3D> Category::getName($this: ?),=0A= =0A= A short closure is barely any longer, and makes it easier to add additional= =0A= logic when needed:=0A= =0A= 'choice_label' =3D> fn(Category $c) =3D> $c->getName(),=0A= =0A= 'choice_label' =3D> fn(Category $c) =3D> strtoupper($c->getName()),=0A= =0A= =0A= Ultimately I'm not convinced it's worth it to make the partial function syn= tax=0A= and semantics more complicated to support this scenario, given that short= =0A= closures already provide similar conciseness and greater flexibility.=0A= =0A= Kind regards, =0A= Theodore=