Récemment je suis venu avec cette solution pour énumérations en php:énumérations parfait en PHP
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);
}
}
Exemple:
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);
}
Il fonctionne parfaitement, j'ai des notes IDE, je peux parcourir tous mes enums mais je pense que je manque quelques fonctionnalités enums qui peuvent être utiles. donc ma question est: quelles fonctionnalités puis-je ajouter pour faire plus d'utilisation d'enums ou pour le rendre plus pratique à utiliser?
* (officiel) * [Demande de commentaires: Enum] (http://wiki.php.net/rfc/enum) et aussi [SplEnum ] (http://de2.php.net/manual/fr/class.splenum.php) – Gordon