Perfect Enums in PHP

soretin

New Member
Recently i came up with this solution for enums in php:\[code\] class Enum implements Iterator { private $vars = array(); private $keys = array(); private $currentPosition = 0; public function __construct() { } public function current() { return $this->vars[$this->keys[$this->currentPosition]]; } public function key() { return $this->keys[$this->currentPosition]; } public function next() { $this->currentPosition++; } public function rewind() { $this->currentPosition = 0; $reflection = new ReflectionClass(get_class($this)); $this->vars = $reflection->getConstants(); $this->keys = array_keys($this->vars); } public function valid() { return $this->currentPosition < count($this->vars); }}\[/code\]Example:\[code\]class ApplicationMode extends Enum{ const production = 'production'; const development = 'development';}class Application { public static function Run(ApplicationMode $mode) { if ($mode == ApplicationMode::production) { //run application in production mode } elseif ($mode == ApplicationMode::development) { //run application in development mode } }}Application::Run(ApplicationMode::production);foreach (new ApplicationMode as $mode) { Application::Run($mode);}\[/code\]it works just perfect, i got IDE hints, i can iterate through all my enums but i think i miss some enums features that can be useful. so my question is: what features can i add to make more use of enums or to make it more practical to use?
 
Back
Top