Re: RFC: Enum
| From: | Matthew Weier O'Phinney | Date: | Mon, 06 Jun 2011 16:04:22 +0000 |
| Subject: | Re: RFC: Enum | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-53038@lists.php.net to get a copy of this message | ||
On 2011-06-03, Dennis Haarbrink <dhaarbrink@gmail.com> 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 | matthew@zend.com
Zend Framework | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc