Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:119511 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 44859 invoked from network); 9 Feb 2023 16:18:36 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 9 Feb 2023 16:18:36 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 92D0C180507 for ; Thu, 9 Feb 2023 08:18:35 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS8075 40.104.0.0/14 X-Spam-Virus: No X-Envelope-From: Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2085.outbound.protection.outlook.com [40.107.93.85]) (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 ; Thu, 9 Feb 2023 08:18:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kx039I+h4LXMKHOyYgYcvR3GT7ar2l594fU8+tIhyRgfKJEzUGjlDHLawW9ttL0qo3VHwcT2geqMNW9ueAthJuoLt5+xC84/rJr2dn81I0Iq6SwL9H13OIMJ7m6BS1ZA0w/v8dWT6wUwOxUgUKT9mScq+V53XhF8ff9Y85WCyTRfMvg3PUoK7hWO67nAAUGSMp/23R9L7NlnPo3FIGXFXuTjxuVIoDI1OihtcM8VUoaHg4fMfFrZ+nCLsAKzskrHKtMATjAKwWAADZsqN80jclgz0USBd0wUMId4woHxn1p3G0DGB+zQ6jOAQoI94aixRKDdxm+5zQeH8ao7nVN8cA== 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=srYyD+3ePNa4bd8orl73yG+TSNu6JtPNfQ0xZVnqv20=; b=P3myFM1PmjuHm8bqAa9h9FKJFjyDn7J/uUdIpwDXqwsRugBqs/6t24nFOHnIXzITxct69vM1M8CA3ySy8KOASLrXo6vGLtgJPwSEnGJ2++V6bssTkoo0kUCQTgm6FKrw1S7AjSHtUq/XIV8j6usdytJwPaRT4CSMygsoULYvq+L7TIPHdpTluwbfH/m1W/sU5hCG+0QKVbaIuvgMnkgQcJbx4PWKpVohvR7AgV37lOO7DvMwffGAHbxZfecYjryCafsxsjD3IAy+feHfaGLv9oyf8VTViu44HdvEAaJua6EznRgjBq5seF3fV3734K0+QasZJKHQpO1+4TJiyKsyAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=shymko.net; dmarc=pass action=none header.from=shymko.net; dkim=pass header.d=shymko.net; arc=none Received: from PH8PR10MB6337.namprd10.prod.outlook.com (2603:10b6:510:1cc::10) by BLAPR10MB5284.namprd10.prod.outlook.com (2603:10b6:208:333::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Thu, 9 Feb 2023 16:18:31 +0000 Received: from PH8PR10MB6337.namprd10.prod.outlook.com ([fe80::ed95:e287:42b3:6a2d]) by PH8PR10MB6337.namprd10.prod.outlook.com ([fe80::ed95:e287:42b3:6a2d%7]) with mapi id 15.20.6086.014; Thu, 9 Feb 2023 16:18:31 +0000 To: Rowan Tommins , "internals@lists.php.net" Thread-Topic: [PHP-DEV] RFC proposal: values getter in BackedEnum Thread-Index: AQHZPBKsBFCUG4HjfUOdbkBk+wSvi67GUJWAgAB1dnw= Date: Thu, 9 Feb 2023 16:18:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=shymko.net; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH8PR10MB6337:EE_|BLAPR10MB5284:EE_ x-ms-office365-filtering-correlation-id: 096f9424-a60e-49b4-9604-08db0ab94912 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ew5mAs2CfQQf0uiACAF+wDxP09ALguhGlUCAabyKMBesgklw4OyZ7GiviKfhEJtqhzqaftTUQbsaRB4NZ0FF1qgMhEmUAZpXHIuzzbQ3eBVm001DKEGK6r7aaPob2HF5Tj+FCYIxgEiJbaYiGYeafGzb2Khy42OJCNJ0B1MbaI/akBzv7+dUAF73lEf3YhZYh5pVp/NX/u5zTxkIXB7DAMSCl2fetOOWN1TjP0JTGH+a/5zfzZnmKCJQnhfTTgOGpisuPBcF13Bk97+iBansnUuDqs6HkRr37ChNY67McbQOIy3RowO3xOOvEfXhs3lU39OpfEKflRX+Q6plYgKx0gMvPh5BkclAvaauYnn83t6kkYe8zTh/8Z6Xz+pCtOj+NHH5x2pvvhI+F3j5tZQ6wNwlAEQyIlD2k/3DTuKVyOCadjB74k1U13fZlsLw+iDE2tXyFY1W7LqycJR6/kk1lDY7OhCP06Fh/qHegF59uAsNGqxwn5ZGGS6aUV9X0Z7nZ8Iti9RKS5k51GUyO1kuG8slmpAK5RAU+4be7FByP9ZKktp+uGWlMVNUei1eJnS2etvpY3ErTBAvyD7aAmjTPy0NgmIHfItjG7aclikD8ZUPTLaG6hMdbS+nh9pK8UpFwyhmJdKS+yaprGPnn4kVO0wSUsXj3dkn95KoPtlCfDrylr1kvXz8al/+iQPsCEartBsv1CMZYQiLIMPNhtZowsXEYGAZDjck4ywww36fwtM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR10MB6337.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(396003)(39830400003)(136003)(376002)(346002)(451199018)(19627405001)(2906002)(5660300002)(8936002)(52536014)(66556008)(64756008)(8676002)(66446008)(66476007)(76116006)(66946007)(91956017)(41300700001)(166002)(966005)(6506007)(26005)(9686003)(186003)(53546011)(86362001)(33656002)(122000001)(83380400001)(38070700005)(55016003)(478600001)(110136005)(38100700002)(316002)(7696005)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?pP3yBMjUOleJHg6R3Ff5xHC5od9/n3Gvfp8oYoUGjuAr88mscqjr8+Nhk7?= =?iso-8859-1?Q?TmQSvQCDsoiG19rS49gQY/CmkbuilpZiSPuuVAeA4zgPtWTVoHl4COHeK9?= =?iso-8859-1?Q?gaZeFvbWRSGGC1/4r4hL9oWsHJrz3GXzxzowYWnEe5iwieXxRUveXWkoAB?= =?iso-8859-1?Q?QGhzisIi97sVZebhTdoQepb722stvtaziTHDMxVd1NO9GkCjtjvAkALAW5?= =?iso-8859-1?Q?AOR/RLIAVSlekbrtnp6v4gtnySRCUs4C/W1X7K2m/EgrH556eB1h8gn8vz?= =?iso-8859-1?Q?2Z5SpgQiImbej6/Staeluw1xNHcUPoGViEJ2e+t1qvYhdfVnn/cwHm36KD?= =?iso-8859-1?Q?HqEzerSjYenRsyM+mhJdxCcorPaIO/xkzz2c+RPb4xor0bzDWnL3h39FIb?= =?iso-8859-1?Q?yHfvdbL9CY8PDEOfDaDY8cCzWPCKC5WWfi83gwc1Ub6tNUNFJQSr0ROIMG?= =?iso-8859-1?Q?AbWn0JwdOwjQkCyUJzu8t2sfhQ223QY6QOri6z1WRiwXoVbeeDPrNnIwLH?= =?iso-8859-1?Q?ksST3WZH3P+glRL5L1lMve6jWKAfPGUuYzMkr2qS2Q6EssiCgD0GgmKXvt?= =?iso-8859-1?Q?YLNa9ceW+QNm5jN8kV7nxMiB+kdh8TdNnlw47sha7U8aSxQYrx5J6hkqwI?= =?iso-8859-1?Q?Spvmv8x2LPXUzY1Dj5HELu8XEg66f4U/qiJUr1V4PiH8w1IX1x01hGpALz?= =?iso-8859-1?Q?7mIZ3IUNeuxtQy+Ecf/zZ/xTcPu7KbbmRGx80J14noyZVLKrgTY1UgTQ8Y?= =?iso-8859-1?Q?0cvcmRd7cLgeS6cO3Swf05v0heiZqm4F5oN8xbab5FK/tmErrrz7CcTm3v?= =?iso-8859-1?Q?IUcjge+uHQ89X66fhAvYpUJu/1uG6/MYgnutv1ktLOk3xTZAZxYLIr4Uxp?= =?iso-8859-1?Q?2XFgOgHo1O6hdfCjgj4aRLsRb+neF4+2Zk1x2dvNx01Q+SrP5oyjSF5+4G?= =?iso-8859-1?Q?vIy+p5b4gBtMScBLwXTMQpHTyqEttjsjaW8odRmghryjcKD5cm5/1256sb?= =?iso-8859-1?Q?mdeAyKZqwXM2G00K7I/jWsVgDaVmAM6cN4HFgcHn/FJHcizpJRw6zDjh4d?= =?iso-8859-1?Q?BKb9l6wTh7PhMtWrIxO104usDMn9m2gWyUvc1JkkVxqF0UGIGQZlOE3F0p?= =?iso-8859-1?Q?+AdhM2ojfv6E3wOQSRBNt9j0yJwwMr7BcAFxLd+EmIqKddd3eiboeJldM7?= =?iso-8859-1?Q?Rdd0uTnUx4BK0L+KGpsx21wOf3O+RaWdn3BsV8Ahgue9y2q+XQdqj5ICUk?= =?iso-8859-1?Q?vAZ+CvrEqy07N8k95IQQMpTHsmlyuzP2XEFU1hrQj7QY9BLAFk4rxVyfSr?= =?iso-8859-1?Q?/YPmFz//3D/CoQbTxc/aLXdfMkjZEenIAEfAKAT6hLM5LW8W0JawHHAyks?= =?iso-8859-1?Q?1ACqyYL5fNQJ8ceG606ogA3KxUjOzh69UX2qQAybnocpjvhzXRLG260hWb?= =?iso-8859-1?Q?Wa/q+PJNKizWKPWh/4f8GgVYJDPSszsbV3wuc4jXxE2Biy7boiX5kRFFlg?= =?iso-8859-1?Q?kRhF/tNXbPX945TATxDna+2yyKrrqe2Txk4SoS3IXlh1BDHAQ1MmCdcSl6?= =?iso-8859-1?Q?Zg5fxkjTDSZuDupx6pW14pgZgxjOYhDff3ccZQF9mvNZzT+R0h4qecXboJ?= =?iso-8859-1?Q?sgVMvGsi3UKIk=3D?= Content-Type: multipart/alternative; boundary="_000_PH8PR10MB633777DE6218F94F3B08BC6ABFD99PH8PR10MB6337namp_" MIME-Version: 1.0 X-OriginatorOrg: shymko.net X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH8PR10MB6337.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 096f9424-a60e-49b4-9604-08db0ab94912 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 16:18:31.3927 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d7878c48-41c7-48dd-bd7e-899af7355b7e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1HTPD1WO2iax6aH26QsnKI5YmAM08WHUe+Fiw3/iCLulwxsaOAfCA5mAyz64tE4fE0UOqy/6zbM6d0LH/mTAhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5284 Subject: Re: [PHP-DEV] RFC proposal: values getter in BackedEnum From: sergey@shymko.net (Sergii Shymko) --_000_PH8PR10MB633777DE6218F94F3B08BC6ABFD99PH8PR10MB6337namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable ________________________________ From: Rowan Tommins Sent: Thursday, February 9, 2023 12:56 AM To: internals@lists.php.net Subject: Re: [PHP-DEV] RFC proposal: values getter in BackedEnum On Thu, 9 Feb 2023 at 01:30, Sergii Shymko wrote: > I'd like to propose an improvement to backed enumerations introduced in > PHP 8.1. > When using enums, it's very common to get all values using the following > boilerplate: > $enumValues =3D array_map( > fn (\BackedEnum $case) =3D> $case->value, > ExampleEnum::cases() > ); > Since the value is exposed as a public property, there is already a much shorter way of writing this: $enumValues =3D array_column(BackedEnum::cases(), 'value'); As I pointed out in a StackOverflow answer [ https://stackoverflow.com/a/71235974/157957], you can get the case name the same way, and use different arguments to array_column to get combinations like a look up table from value to name: $nameToValue =3D array_column(BackedEnum::cases(), 'name', 'value'); Regards, -- Rowan Tommins [IMSoP] Ho Rowan, Thanks for pointing out a shorter way of coding this via array_column()! While it's good to know and an improvement, I think, the proposal still sta= nds. BackedEnum::values() is much more convenient than array_column(BackedEnum::= cases(), 'value'); And the potential for the performance optimization to return a constant is = still there. IMO, other variations of array_column() returning a map don't seem to be us= eful in practice. Particularly, what is knowing the case name good for? Do you propose to res= olve it to the case instance like so? $case =3D constant(ExampleEnum::class . '::' . $caseName); My understanding is that backed enums serve the purpose of doing the mappin= g. Regards, Sergii --_000_PH8PR10MB633777DE6218F94F3B08BC6ABFD99PH8PR10MB6337namp_--