Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:117378 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 78170 invoked from network); 18 Mar 2022 20:35:47 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 18 Mar 2022 20:35:47 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 6C4D6180505 for ; Fri, 18 Mar 2022 15:01:21 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS8075 40.80.0.0/12 X-Spam-Virus: No X-Envelope-From: Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam08olkn2047.outbound.protection.outlook.com [40.92.47.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 18 Mar 2022 15:01:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YQd4Y+bh3JOZ5PoWHLXnGnNGO718WFgNlthNthlYwXVjjPMNbWY7g27pGxJTkJ5o7mFvZn1fxhv0giRqDNz3CAda25bsbq+ctgBm+wNa1pTGckrZmat9PXKQ8O/yHHh/ArTJaZJlc7l/sxB7hgYLv8kmY9wwjxi4rTtnHOvobNgszcIpg+zlir3SvD9lVIV5JSphMcm6Y0NC4Xt30UcqINFE7T8AM2qRnkqTrOhD388OZADhmbFHRP6aoLvEnM0vlR1obA9WM9C5ZqCIZy1Uc3RaAdvl/23fqhHWK82j2AKptmi6YeBgbw3k2CA0HotfLl1GxUIRJv9lGejJfHgm4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=HflbFNYo8QeFiB1Nw6hIe5M/7qr4UOrLJ5kBgjBSkTg=; b=Aai5ixPDd3vru9T1Oe/Sd0y33JiA80VAFmvwZBVgQNEG5CEoy+JwHD8+wyFLO1EJWX/C2Z0/6U1IAvwrq67chUwYpIPsOK5YezQr34eHvvt/QRy8yizTUWgke75IdZQu80kCfYG+LUhflOeVzAnujOfNKf8O3JbbqMPyYHTs8SlCANAzN7s5WGv0dq/16K1dO0gISjfsqfk2h9Nrc214N4aAT5fBYmHEGrRKfMVlvafiUtAMtiXh0mTlseulU9LHfeml4oucO8UB9LpIWC3kkMqXpN/lbDG73SvlM/shDexKLesPErIyaKCcIrTbvjiTSxKH4rKLIMU3IpRtzn98Yw== 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=HflbFNYo8QeFiB1Nw6hIe5M/7qr4UOrLJ5kBgjBSkTg=; b=PrT/ndDnthKX5WLAHnxiDZf33tI4WxNbRyldqWgJVggueImv4Tk3Zaqloa2RVXoBbHn/RJI1amkHt0tJpHvxX3TLUqC5cfnTnAndGNcu22M7ki9OJYd/5zV/25Pc4wa1cwEDlOXmLZbj+0QGlqH+s4KzInJY6OWMAMKbD1topzMH7fLdPXd/F722NGN5935ZsP4KWc3fh+GhbgqvU4COw2NvHCaKS+L3o3wc9Wo2KyLKbVFjI0HViiuNGDnRvC83UEhUTkr9dgvNjQX+OOMz/8HkZO/Aqe818X4CDxrI+OGWwrWSSq7kwTxkqwlbvxrCT4nlfyaLOmAZ6uIjvtgLjQ== Received: from BN7PR05MB4033.namprd05.prod.outlook.com (2603:10b6:406:90::33) by CO6PR05MB7507.namprd05.prod.outlook.com (2603:10b6:5:345::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.7; Fri, 18 Mar 2022 22:01:19 +0000 Received: from BN7PR05MB4033.namprd05.prod.outlook.com ([fe80::719c:1d3d:7526:8c0b]) by BN7PR05MB4033.namprd05.prod.outlook.com ([fe80::719c:1d3d:7526:8c0b%3]) with mapi id 15.20.5102.008; Fri, 18 Mar 2022 22:01:18 +0000 To: Chase Peeler CC: Ilija Tovilo , PHP internals Thread-Topic: [PHP-DEV] [RFC][Under discussion] Arbitrary string interpolation Thread-Index: AQHYOk46FZqw3Y/GY0OeXkSTCtgacqzEKLiAgAACnQCAAFwBroAApZaAgACA0Qo= Date: Fri, 18 Mar 2022 22:01:18 +0000 Message-ID: References: <4AC60E84-B2AD-43F4-9B72-92604FC7BD41@gmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: d4bb9363-7ece-b7b5-0b52-9009dcdde752 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [DiBP3iJXdYN9WLAjfpnKdYHSVEzbkXhkkgt3lLUaC+s=] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c3d2a06-cbb9-499f-873c-08da092ad4c6 x-ms-traffictypediagnostic: CO6PR05MB7507:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xSdGnjUXD86FtTqeujvHVj32B2lkGuP1ytesuW7JMv3CwWfeTuhlUPhGZDXIEggwUvgio+ujyYb0X/md4b+sgRFTXV2XLu5IZsrv9rgmHn26vqdTRkweyP6qmtXzlVenjpgaA1EiwTWpnUEkeGtSoaz/NUb8b93J2Y7qsukpz+ZHqvCafSz22zMMGkDCywE9T4Qw5q+jNHEvCugqB05HXzqlJ8UExLazuK6zaOQ5v50Zaef+GY7DSoWu8bgnVs6D+tg1R3qPJfxu3BwPtPIshRFUdW3bCu2Wvf36sM6toF2yRBRACVwVZkOHw2pZW4CuZcsQYTKdL7c7hgVWMKmKrChViTIJpyOpLDmn8l0InBwoCl6nq0EsvLYM27bTqO/tr9QLzgeKeIdtM6gj0X60q5e+S109o3ROzZXTG5TLww/iRjPMuPHjfe8G9BdmaCgjdi6AdMb1AjUVblUBh4EqP9cjdtGrE3Fi5zOqyYXX0XKIiMaVgDvLMsnpNWAe/HLHel6rmfluZJMsMlzN8ajfMPzA1t/JRx7CuuD/hNLA5buKNI5xy//d/V9bStWDD8sr+F5jZBADpfiel8p0n3C60A== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?SeGdUKTWiz3bPf/Jgrr+tuE+JX+KK7trkRIKrgzAaHo11Z0GSnvLF4q0OE?= =?iso-8859-1?Q?PaLhGERjxmohjuncQG74NUbMnChZS6pFf+y1Acp0Q3IXNXLdOVjFCRXmv4?= =?iso-8859-1?Q?vgSAWiySyGeW2tIse5fsqEYVnPUw7A8S9F51bNfhUeaOU8TYvVvs64yc6o?= =?iso-8859-1?Q?mmWx2V3jmAObI/vHZm+KstPDcpMRLDXUYgDqQpBMtKTC/yff0SB3EROeNc?= =?iso-8859-1?Q?FEDSddbor6NcVfE9SCf9TBj9jjloXvT25m/ihDxIytMZ7QK8eyYUwpVKvF?= =?iso-8859-1?Q?9eN3Cy6TuQKVOsdDQRvurlpMTbQk2SLd5me2z5dzKwXQ93mPwvnrFcsYkI?= =?iso-8859-1?Q?1nm1NgXoedJb0KitHOWEpklwdGZOkloJJvq6i+iNCMQKRySMmudix822+9?= =?iso-8859-1?Q?jevRHFIZ051Et1C9e/mheJHjJeeXBoGQAW609ifQs1tudlpW2VShJBQJWf?= =?iso-8859-1?Q?aV9bbtJCzSQOJAVciH3ksN6QeEXynKeuY1xUdVsNMqtroIyHg1bC8KEle8?= =?iso-8859-1?Q?YXrNF3e+1dz+rjb+I9en3N15OOb291BWaVeJOkLyhe2NTlDTTTG1vhM5Us?= =?iso-8859-1?Q?6/EV9mp4pr0OGdACzxj9g/ngSdz3euYahhvCgTqJTXeKNNYrAtjnXsOox3?= =?iso-8859-1?Q?0z0NAVNcjIU4JoGfvttEvPji2H0GnrfJZ3CVUEhnjDpXRhjsbVyYQsChEC?= =?iso-8859-1?Q?JlHE4SaZI1AC/V2ptUWm/lQ8ydejKZNsEp+gq40OT2CqezaYxmHBfPTi5j?= =?iso-8859-1?Q?cbEJm6WFRehId4qzuWAecPtY5RcMJ+vzek551xO6M5tuW/FbDIgUGKJvVx?= =?iso-8859-1?Q?j4+VZUIDGx+zn8MR4PXWgrGzHB7sefXbRJGe8bx6BVbzjQVs3vSMFkJoMj?= =?iso-8859-1?Q?BFQfu3Fi2EC03Y+boOyFRCz+d6MBZaIMPLnc9fIWEhkNml63XKmPuLqBl5?= =?iso-8859-1?Q?KzyJ6DSW40myixlx0zKrhZxxpSk0X2WRkD64WSuWa6wk4WmdlXuTrmoKIo?= =?iso-8859-1?Q?KcLDk2/3g3fpwTTZjPg/w9TdTUNKc/gp73D9UXWCSUOSIjRAzayJb+pMxR?= =?iso-8859-1?Q?dBmI9c88r+keDLTRYJFZ3jqPGuMZuXz0lHXOjQW5W32UVsFE1W5Br3uM3t?= =?iso-8859-1?Q?qJ2o7gHAuYRwz8phxbmGUXfgBGmXwBWpZRLJMf8n7ZTBVn2BPUTO4g5J0G?= =?iso-8859-1?Q?Vyr1vxJjI5WxmA=3D=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN7PR05MB4033.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 2c3d2a06-cbb9-499f-873c-08da092ad4c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2022 22:01:18.8466 (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: CO6PR05MB7507 Subject: Re: [PHP-DEV] [RFC][Under discussion] Arbitrary string interpolation From: theodorejb@outlook.com (Theodore Brown) On Fri, Mar 18, 2022 at 09:02 Chase Peeler wrote:= =0A= > On Fri, Mar 18, 2022 at 12:49 AM Theodore Brown = wrote:=0A= > > =0A= > > Personally I'm really looking forward to having this functionality.=0A= > > Just a couple days ago I wanted to call a function in an interpolated= =0A= > > string, and it was really annoying to have to wrap the function in a=0A= > > closure in order to use it.=0A= > > =0A= > > If this RFC is accepted I'd be able to replace code like this:=0A= > > =0A= > > $name =3D "Theodore Brown";=0A= > > $strlen =3D fn(string $string): int =3D> strlen($string);=0A= > > echo "{$name} has a length of {$strlen($name)}.";=0A= > > =0A= > > with=0A= > > =0A= > > $name =3D "Theodore Brown";=0A= > > echo "{$name} has a length of {$:strlen($name)}.";=0A= > =0A= > =0A= > Out of curiosity, why not:=0A= >=0A= > $name =3D "Theodore Brown";=0A= > echo "{$name} has a length of ".strlen($name).".";=0A= > =0A= > or even=0A= >=0A= > $name =3D "Theodore Brown";=0A= > $len =3D strlen($name);=0A= > echo "{$name} has a length of {$len}.";=0A= =0A= Concatenation works fine for a simple example like this, but it can=0A= get a lot messier when there are more than a few embedded variables.=0A= It's particularly an issue with heredoc strings which are far more=0A= cumbersome to concatenate.=0A= =0A= Yes, it's possible to add extra variables before the string like in=0A= your second example, but this feels like unnecessary work, especially=0A= when you already have all the variables you want and just want to=0A= apply a function to them at several places in a template string.=0A= =0A= Theodore=