On 2011-06-03, Dennis Haarbrink <[email protected]> wrote:
> One thing I would really like to see in 5.4 is enums.
> There is already an RFC for that: https://wiki.php.net/rfc/enum
>
> This was discussed in february this year, but no consensus was reached.
> IIRC, the most notable problems were:
> - What is the 'value' of enum constant: string or int, user defined scalar,
> defaults
> - Ability to make enums more 'class like', some people wanted to be able to
> add methods.
>
> Another thing which was discussed (and I think most people agreed on that),
> but is not in the RFC: type hinting in method signatures.
I'd like to see some examples of _using_ the enums -- how do you
reference them? How do you make comparisons against them? As an example:
if (!$value in SomeEnum) {
throw new Exception;
}
Would that work? or are you envisioning this:
if (!$value instanceof SomeEnum) {
throw new Exception;
}
(The latter is less intuitive, IMO).
One particular use case I'm curious about: could comparisons take into
consideration logical operators (&, |, ^, etc.)?
Comparison and/or type hinting against an enum is really the only
feature I see that makes them worthwhile; otherwise, we already have
namespaced and class-level constants.
> I think we should keep this simple proposal simple, let it be an enum in all
> its simplicity.
> The toughest part would be to decide what would be the default value. Some
> proposed to use the name of the constant, which is imho best for
> debuggability (i like this one the best), or an auto incrementing int,
> saying that it is better performance wise and which is more analog with
> mysql's enum type.
>
>
> So, to sum up:
> - Do we really need enum level methods?
> - Need to reach consensus on default values (strings vs auto inc. ints)
> - RFC needs to be updated, explaining the type hinting of enums in method
> signatures
--
Matthew Weier O'Phinney
Project Lead | [email protected]
Zend Framework | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php