On Fri, Apr 28, 2023, at 4:47 PM, Garet Claborn wrote:
> You are correct, thank you.
>
> The RFC draft has been posted to
> https://wiki.php.net/rfc/treat_enum_instances_as_values
>
> -Garet

I have already explained at length on the PR thread why this is a fundamentally 
wrong way to approach Enums.  We absolutely should work to improve the Enum 
collection story in PHP, but silently casting Enums to scalars is the wrong way 
to do it.  

As noted in the original Enum RFC:

>  As objects, Enum cases cannot be used as keys in an array. However, they can 
> be used as keys in a SplObjectStorage or WeakMap. Because they are singletons 
> they never get garbage collected, and thus will never be removed from a 
> WeakMap, making these two storage mechanisms effectively equivalent. 

WeakMap may not be not ideal, but it is more ideal and effective than 
introducing silent Enum->primitive casting, which we have explicitly and 
deliberately avoided until now.  It can still be used in mostly the same way as 
arrays are today; the only caveat would be if you're expecting to use a mix of 
different types as keys, in which case the answer is to fix the code instead 
because that's already a broken approach.

--Larry Garfield

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to