begin process at 2012 05 27 20:03:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > ENUM JAVA-LIKE TYPAGE FORT

ENUM JAVA-LIKE TYPAGE FORT




 Description

Comment faire un enum en php ?

http://fr.php.net/manual/en/language.oop5.php#7 3929
ici on pouvait trouver une solution qui semblait correcte et simple, mais le typage de cette solution semble gennant pour faire des fonctions comme :

public function JourDeLaSemaine_Is_WeekEnd(Day $jour)

on doit alors avoir un element de l'enum qui a un "instanceOf" correct !

ici, vous avez un enum java-like c'est a dire que :
un enum est un nouveau type a part entiere
un enum est un objet, il peut contenir d'autres fonctions
on ne peut pas "construire" un enum.

Source

  • <?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();
  • ?>
<?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();

?>

 Conclusion

ici, l'exception est lancee histoire de montrer qu'on ne peut pas lancer l'enum.


 Sources du même auteur

Source avec une capture IMAGES GENETIQUES
Source avec Zip Source avec une capture RUBIX CUBE
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
Source avec une capture ECRIRE UN TEXTE EN CERCLE SUR UNE IMAGE

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TODO LIST (AJAX/PHP5) par VinceMonkeyz
Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
CLASS RECHERCHE PHP5 POO par mtrix000
CLASS AUTHENTIFICATION PHP5 POO par mtrix000
CLASS PAGINATION PHP5 POO par mtrix000

Commentaires et avis

Commentaire de coucou747 le 14/01/2008 01:58:51 administrateur CS

new Enum('enumTest', 'public function aboyer(){ echo \'test\'; } ', 'black', 'white', 'green');

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...

Commentaire de AlexN le 15/01/2008 15:10:59

quelques remarques sur ce code ici... : http://www.phpcs.com/tutorial.aspx?ID=798#comm4144

Commentaire de FrancoisHill le 05/11/2008 15:09:00

Salut

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Install PHP + JAVA [ par laurent ] Bonjour,J'ai de gros problemes pour faire fonctionner java dans php avec une suse 7.1.Qq'un peut'il me donner un listing d'install qui fonctionne.J'ai Est il possible de remplacer un java script par php pour un lien... [ par AxL ] Est il possible de remplacer un java script par php pour faire un lien qui ouvre une nouvelle fenetre sans les menus, les resize, la barre de titre .. chat multiclients (JAVA) [ par Yzermat ] Je suis a la recherche d'un chat multiclients en java! Ce serait bien si il était assez bien commenté! C'est tres urgent et assez important , sinon je setInterval de Java en php?? Comme un Timer?? [ par Blondy ] Je cherche une méthode qui fera comme la méthode setInterval en Java mais en php. C'est à dire qui appellera une méthode à tous les x temps... C'est p Pb avec java script + frame [ par mika20 ] Salut.j'ai un pb. je n'arrive pas a faire afficher une page php dans une frame lorsque je clic sur un clien en java scripte. Je m'explique plus claire Passer variables avec menu Java. [ par DarkSchneider ] Bonjour, Comment récupérer une variable sans aide de formulaire ?Je m'explique :Pour cela, j'ai sur la page 1 des renseignements divers, et pour a Variables Php Java [ par defkrie ] Voila, je ne me souviens plus comment on fait pour transféré une variable d'1 script java à une variable en php.jai une variable toto en java et jaime Java -> Php [ par defkrie ] voila j'aimerais récuperer une variable issu d'1 script java pour la traiter ensuite avec php. Quelqu'1 connait il le moyer de transmettre la variable differnec entre php 4 et php5 [ par hardelgylls ] Bonjourpetite question :j'ai passer un oral et l'examinateur m'a demandé quel était la différence entre php4 et php5. et la gros blanc, est ce que qqu Doc PHP5 sniff sniff [ par slhuilli ] Bonjour, Bonsoir,Je suis a la recherche d'un PDF qui recenserait les mots-clefs + explications (bref un bouquin complet) sur PHP 5 qui parait-il est


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales