Re: [RFC] Enum proposal (yet another)

From: Date: Wed, 22 Feb 2012 22:13:19 +0000
Subject: Re: [RFC] Enum proposal (yet another)
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
While I'm a huge fan of Github, why did you decide to host your RFC there
instead of on the PHP wiki?  I realize there's an older proposal there
right now, but that's from 2010 and seems to be dead in the water.  Even if
yours is just a draft, the wiki is designed to be able to accommodate
progressive revisions.

I only mention this because I think it definitely helps to have one central
place where all the RFCs can be looked at, including the draft ones.  At
very least, could you add a link to your RFC on the wiki page?  I'd also
like to throw another idea out there:  Should we consider amending the RFC
procedures to allow for expiration of old RFCs that have never been moved
to the voting stage?  I was wondering because that older enum RFC is still
"Under Discussion" and last modified nearly a year ago; actually proposed
nearly 2 years ago.  It seems to have been abandoned so I'm just curious if
maybe we should have some process in place to categorize that.


Regarding this particular RFC, personally I've never seen the need to use
enums, but it certainly does sound like something that would add
convenience and make that one less feature other languages have that PHP
doesn't.  So I don't personally have any objection so long as the
implementation is solid.

--Kris


On Wed, Feb 22, 2012 at 1:43 PM, Dmitri Snytkine <
[email protected]> wrote:

>
> For those who keep saying "but this can already be done in php", here is a
> pretty good article.
> Long time ago enums were not available in Java also, so this article
> explains that yes, thigs can technically could be done before the enum, and
> why certain things are better with enums.
>
>
> http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html
>
> I think enums will be beneficial to php, but will add one more features
> that
> people not familiar with it will have to learn about.
>
> Dmitri Snytkine
> Web Developer
> Ultra Logistics, Inc.
> Phone: (888) 220-4640 x 2097
> Fax: (888) 795-6642
> E-Mail: [email protected]
> Web: www.ultralogistics.com
>
> "A Top 100 Logistics I.T. Provider in 2011"
>
>
> -----Original Message-----
> From: Sebastian Krebs [mailto:[email protected]]
> Sent: Wednesday, February 22, 2012 4:31 PM
> To: PHP internals list
> Subject: Re: [PHP-DEV] [RFC] Enum proposal (yet another)
>
> Am 22.02.2012 22:22, schrieb Ángel González:
> > On 22/02/12 09:37, Sebastian Krebs wrote:
> >> class MyEnum {
> >>      const FOO = 'foo';
> >>      const BAR = 'bar';
> >>      private $value;
> >>      public function __construct ($value) {
> >>          if (!in_array($value, array(self::FOO, self::BAR)) throw new
> >> UnexpectedValueException;
> >>          $this->value = $value;
> >>      }
> >>      public function __toString () { return $this->value; }
> >> }
> >>
> >>
> >> function doSomething (MyEnum $foo) { /* code */ }
> >>
> >>
> >> What I wanted to say: I don't see, what is not possible already?
> >
> > I want to call it doSomething(FOO) or doSomething(MyEnum::FOO),
> > not doSomething(new MyEnum(MyEnum::FOO));
>
>
>
>
> // The class file
> class MyEnum {
>      public static $FOO;
>      public static $BAR;
>       const FOO = 'foo';
>      const BAR = 'bar';
>      private $value;
>      public function __construct ($value) {
>          if (!in_array($value, array(self::FOO, self::BAR)) throw new
> UnexpectedValueException;
>          $this->value = $value;
>      }
>      public function __toString () { return $this->value; }
> }
> /* static code block */ {
>   // As long as PHP doesn't support "constant references" (;))
>   // (--> constants with objects or arrays)
>   MyEnum::$FOO = new MyEnum(MyEnum::FOO);
>   MyEnum::$BAR = new MyEnum(MyEnum::BAR);
> }
> // End class file
>
> // Somewhere deep within some other code
> doSomething (MyEnum::$FOO);
>
>
>
>
>
> However, I can't see, what is the big thing, that isn't currently not
> possible (except any "I want"-argumentation :X)
>
> Sidenote, according your examples above on how you want call functions:
> Considered using normal constants?
>
>
> >
> > +1 for adding enums (although I'm open to variations from that exact
> > proposal).
> >
>
>
> --
> 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
>
>


Thread (70 messages)

« previous php.internals (#57966) next »