Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:112626 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 30963 invoked from network); 28 Dec 2020 20:48:01 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 28 Dec 2020 20:48:01 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 3E8E3180384 for ; Mon, 28 Dec 2020 12:22:17 -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=-0.7 required=5.0 tests=BAYES_20,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_PASS,SPF_NONE autolearn=no autolearn_force=no version=3.4.2 X-Spam-Virus: No X-Envelope-From: Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (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 ; Mon, 28 Dec 2020 12:22:16 -0800 (PST) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 28F365C00BE for ; Mon, 28 Dec 2020 15:22:15 -0500 (EST) Received: from imap26 ([10.202.2.76]) by compute4.internal (MEProxy); Mon, 28 Dec 2020 15:22:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=/s13aO177xih+93/rvWdwiUz8qu2o E44DYYvRnElBFI=; b=eTGB8MlNCCN2GLDdxfWtOmKcsR4lkP9jlR3g4zjp832H7 6DugAtBtooz4L88GlTx5wjxWOiGsb1Gb/WCmWms/sxFzlrY+mFMKpGrCcM8I85HS Hj0Zywlwo15AwbBCI6Bmooybkqi1dwXjLx3xBNIKNIdzc3bo0UIacsVLIdEho1LO v8W0vIgwZr00IS4/iOUWBQeXoPQJF2sUPXSTnVaaVIA2NdqJYJmjMrubaHkzoQmm LEhPq7/GQ5Q7Ie69i1/7shD7Ggsb46bWuWprGCnTZ16s9wejPVzKlRtlER+X+0v7 ErLKyYjMfCj0XgC3LV2bAJhNoxsOdpR7bgS06s3Sw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrvdduledgudeflecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefofgggkfffhffvufgtsehttdertderredtnecuhfhrohhmpedfnfgrrhhr hicuifgrrhhfihgvlhgufdcuoehlrghrrhihsehgrghrfhhivghlughtvggthhdrtghomh eqnecuggftrfgrthhtvghrnhepgeehffeihfdtkeefveffueeiiefhjeduhfeuhfdtteel lefhvdejteekgffgueeinecuffhomhgrihhnpehphhhprdhnvghtnecuvehluhhsthgvrh fuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheplhgrrhhrhiesghgrrhhfihgv lhguthgvtghhrdgtohhm X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id 8FFA014200A2; Mon, 28 Dec 2020 15:22:14 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.3.1-61-gb52c239-fm-20201210.001-gb52c2396 Mime-Version: 1.0 Message-ID: Date: Mon, 28 Dec 2020 14:21:53 -0600 To: "php internals" Content-Type: text/plain Subject: [RFC] Enumerations, Round 2 From: larry@garfieldtech.com ("Larry Garfield") Hello, Internalians! After considerable discussion and effort, Ilija and I are ready to offer you round 2 on enumerations. This is in the spirit of the previous discussion, but based on that discussion a great deal has been reworked. The main change is that Enumeration Cases are now object instances of the Enumeration class rather than their own class. Most of the other changes are knock-on effects of that. Of particular note: * Cases may not have methods or constants on them. They're just dumb values. * Enums themselves may have methods, static methods, or constants. * Traits are supported, as long as they don't have properties. * The value() method on scalar enums is now a property. The full RFC is here, and I recommend reading it again in full given how much was updated. https://wiki.php.net/rfc/enumerations The implementation is 98% complete; there's still a few lagging bits in reflection, and some opcache bugs that Ilija is still stomping on. There are a few outstanding questions listed that we would like feedback on. We're not entirely certain which direction to go with them, for reasons explained in the RFC. Input on those is especially welcome. Happy New Year. May it be enumerable. -- Larry Garfield larry@garfieldtech.com