pacci Posté 5 Juin 2011 Partager Posté 5 Juin 2011 Bonjour à tous. J'ai recherché une class de Collection en PHP comme un arraylist en JAVA. N'ayant pas trouvé j'ai commencé à développer la mienne. Celle-ci ne marche pas donc je m'en remet à vous pour savoir si je ne suis pas partie dans la ré-invention de la roue et si il existe une class par défault dans PHP le faisant. Je vous propose mon code : <?php /* * Class métier de collection * une collection est un tableau d'objets sur lequel on attribut des traitements */ class Collection{ private $objets; // Tableau qui va être renvoyer private $num=0; // Nombre d'occurence private $classe; // Constructeur, créer un tableau public function Collection($class){ $this->classe = $class; $this->objets=array(); } // Retourne le nombre d'éléments de la collection public function Cardinal(){ $i=0; foreach($this->objets as $tbl){ $i++; } return $i; } // Vérifie si l'objet existe dans la collection public function Existe($Objet){ $lenght = $this->Cardinal() - 1; for($i=0;$i>=$lenght;$i++){ if($Objet == $this->objets[$i]){ // On arrête le traitement et on renvoi .vrai. return true; } } // Si on sort de la boucle, l'objet n'est pas dans le tableau return false; } // Retourne l'index de l'objet passé en paramètre dans la collection // Le premier objet de la collection à pour index 0 public function Index($Objet){ $lenght = $this->Cardinal() - 1; for($i=0;$i>=$lenght;$i++){ if($Objet == $this->objets[$i]){ return $i; } } // Si on sort de la boucle, l'objet n'est pas dans le tableau return false; } // Retourne l'objet qui se trouve à l'index passé en paramètre public function DonnerObjet($k){ $lenght = $this->Cardinal() - 1; echo'<script type="text/javascript">window.alert(\''.$lenght.'\');</script>'; // Si le paramètre est plus grand que la taille du tableau alors routourne .faux. if($k > $lenght){return false;} else{ for($i=0;$i>=$lenght;$i++){ if($i == $k){ //echo'<script type="text/javascript">window.alert(\''.$i.'\');</script>'; return $this->objets[$i]; } } // Si on sort de la boucle, l'objet n'est pas dans le tableau return false; } } // Ajoute un objet à la collection public function AjouterObjet($Objet){ $this->objets[] = $Objet; } // Remplace dans la collection l'objet figurant à l'index passé en paramètre par l'objet en paramètre public function RemplacerObjet($i,$Objet){ $lenght = $this->Cardinal() - 1; // Si $i est inférieur ou supérieur à la taille de la collection alors on retourne .faux. // Sinon on remplace et on retourne .vrai. if($i < $lenght || $i > $lenght){return false;} else{ $this->objets[$i] = $Objet; return true; } } // Supprime l'objet passé en paramètre public function SupprimerObjet($Objet){ $lenght = $this->Cardinal() - 1; // Taille for($i=0;$i>=$lenght;$i++){ if($this->objets[$i]==$Objet){ // array_splice(tableau, ligne, nb_doccurence_a_supprimer) $this->objets = array_splice($this->objets, $i, 1); return true; } } return false; } }?> En fonctionnement : $Contact1 = new Contact('1', 'Dupond1', 'Ricardo1', '00 00 00 00 00', 'quelqueschose_AT_quelquechose.com', '00 00 00 00 00');$Contact2 = new Contact('1', 'Dupond2', 'Ricardo2', '00 00 00 00 00', 'quelqueschose_AT_quelquechose.com', '00 00 00 00 00');$Contact3 = new Contact('1', 'Dupond3', 'Ricardo3', '00 00 00 00 00', 'quelqueschose_AT_quelquechose.com', '00 00 00 00 00');$CC = new Collection('Contact');// Ca marche$CC->AjouterObjet($Contact1);$CC->AjouterObjet($Contact2);$CC->AjouterObjet($Contact3);echo $CC->Cardinal(); //Ca marche et m'affiche bien 3/*echo $CC->Index($Contact2); //marche pas devrais me donner 1echo $CC->DonnerObjet(2)->getNom()); //devrai me donner Ricardo3*/ Voyant les buggs, j'ai stoppé les tests. Merci d'avance pour vos réponses. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant