Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 174 fois - Téléchargée 20 fois
<?php error_reporting(E_ALL); class EnumException extends Exception{} class Enum{ public function __construct(){ $array=func_get_args(); $this->className=$className=$array[0]; $contentClass=$array[1]; $this->element=array(); $count=count($array); eval(' class '.$className.' extends Enum { public function __construct($i=0, $string=\'\'){ if (self::$nbr>='.$count.'){ throw new EnumException(\'On ne peut declarer un nouvel element dans un enum !\'); } $this->content=$i; $this->toString=$string; self::$nbr++; } public function __toString(){ return $this->toString; } '.$contentClass.' private $content; private static $nbr=2; private $toString; } '); for ($i=2;$i<$count;$i++){ $this->element[$i]=new $className($i-2, $array[$i]); $this->$array[$i]=&$this->element[$i]; } } private $element; } $a=new Enum('enumTest', 'public function aboyer(){ echo \'test\'; } ', 'black', 'white', 'green'); echo $a->black; echo '<hr />'; echo $a->white; echo '<hr />'; $a->white->aboyer(); if ($a->white instanceOf enumTest){ echo 'instance'; } $b=new EnumTest(); ?>
5 nov. 2008 à 15:09
Aïe aïe aïe ...
Un 'eval' ...
J'ai posté un code répondant à ton pb :
http://www.phpcs.com/tutoriaux/ENUMERATIONS-ENUM-PHP_798.aspx
15 janv. 2008 à 15:10
14 janv. 2008 à 01:58
j'allais oublier, ca prend comme arguments :
1 -> le nouveau type
2 -> les fonctions a ajouter
3 -> le premier element de l'enum
4 -> le second
etc...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.