Following Richard's e-mail I created a patch and a RFC (
http://wiki.php.net/rfc/enum ) to introduce the enum language
structure.

Two patches are available on to create an enumeration as Richard's suggested

class foo {
 const enum {
 CASE_1,
 CASE_2,
 CASE_3,
 CASE_4
 };
}

And one other without the const keyword :

class foo {
 enum {
 CASE_1,
 CASE_2,
 CASE_3,
 CASE_4
 };
}

Every suggestions/feedback are welcome.

Pierrick

2010/5/20 Richard Quadling <rquadl...@googlemail.com>:
> On 19 May 2010 22:18, Alban LEROUX <s...@paradoxal.org> wrote:
>> On 2010-05-19 14:04:13 +0200, Ferenc Kovacs said:
>>
>>> On Wed, May 19, 2010 at 1:49 PM, Christian Schneider
>>> <cschn...@cschneid.com>wrote:
>>>
>>>> fqqdk wrote:
>>>>>
>>>>> How about extending the usage of the 'final' keyword to support a
>>>>
>>>> java-like
>>>>>
>>>>> syntax?
>>>>>
>>>>> class Foo {
>>>>> private static final $bar = 'ex' . 'pression';
>>>>
>>>> In my book "final" in Java gets an award for sickest abuse of a keyword.
>>>> So no, I don't consider this an option. Simply use a class variable (or
>>>> define()) if you need to store some runtime calculated value.
>>>>
>>>> "But <insert other language> can do this" alone is not sufficient as a
>>>> reason to bloat PHP IMHO.
>>>>
>>>> - Chris
>>>>
>>>
>>> I think that is pretty subjective, but I did suprised when I found out,
>>> that
>>> the global scope constants behaves differently than the class consts.
>>>
>>> Allowing the class consts to be initialized in runtime(if neccessary)
>>> wouldn't breake any php application, only slow them.
>>> Can't we do something, to allow broader usage of consts without
>>> sacrificing
>>> performance?
>>> So I propose to add a new syntax: literal.
>>> literal should behave how the const behaved, and const should be
>>> initialized
>>> in runtime.
>>> maybe we could check from runtime, that the const was a dynamic value, or
>>> literal, and generate a notice for the developer to change the const to
>>> literal for gaining performance.
>>>
>>> What do you think?
>>>
>>> Tyrael
>>
>> That's could be very useful to define flag, something like that :
>>
>> class foo {
>>        const CASE_1 = 1 << 1;
>>        const CASE_2 = 1 << 2;
>>        const CASE_3 = 1 << 3;
>>        const CASE_4 = 1 << 4;
>>        ....
>> }
>> --
>> Alban Leroux
>> s...@paradoxal.org
>> Web developper
>>
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> For this, an enumerator could be an option. I would certainly use this
> a LOT for many sort of statuses within my code.
>
> class foo {
>  const enum {
>  CASE_1,
>  CASE_2,
>  CASE_3,
>  CASE_4
>  };
> }
>
> maybe.
>
> --
> -----
> Richard Quadling
> "Standing on the shoulders of some very clever giants!"
> EE : http://www.experts-exchange.com/M_248814.html
> EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
> ZOPA : http://uk.zopa.com/member/RQuadling
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

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

Reply via email to