Webmaster Hub: Collection (de type Arraylist en Java) en PHP - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Collection (de type Arraylist en Java) en PHP Mise en place d'une collection (de type Arraylist en JAVA) en PHP Noter : -----

#1 L'utilisateur est hors-ligne   pacci 

  • Groupe : Membre
  • Messages : 8
  • Inscrit(e) : 29-avril 11
  • Société:PACCI

Posté 05 juin 2011 - 12:56

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 1
echo $CC->DonnerObjet(2)->getNom()); //devrai me donner Ricardo3
*/



Voyant les buggs, j'ai stoppé les tests.

Merci d'avance pour vos réponses.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)