Collections Objets, ResultSet

Rechercher

Collections Objets, ResultSet

Par Vini  -  2 reponses  -  Le 13/04/2009 19:01  -  Editer  - 

Hello !

Bon je sais que je reviens souvent avec ma collection d'objets mais c'est un sujet un peu difficile à maitriser !

cert je pourrais utilisé un **orm **déjà fais mais le but pour moi

est de comprendre le mecanisme !

l'avantage avec php contrairement à JAVA que j'ai un peu toucher

c'est que tout est à faire ou presque lol

je reviens car je voudrais mieux comprendre le rôle de la l'objet

ResultSet **et l'implémentation de l'interface **ArrayAccess car comme tu me l'as dis Emacs il faudrait que je fasse ma class ResultSet mais quand j'ai vu la taille de la class chez Java pour m'en inspirer j'ai eu peur ! mdrrr

bref je prend comme exemple ma class **Comment **que je fais actuellement !

bon j'ai pluis de problème pour les methode save, update, delete mais je galère à chaque fois pour

récupérer une table complète comme tous les comments dans une méthode du genre getAll()

ou getById() !

d'ailleurs j'ai vu que j'etais pas le seul à me posé la question :D

j'ai du mal à faire la liaison entre une collection d'objets **Comments **que j'extrait depuis MYSQLComments et l'objet Comment seul

voilà si quelqu'un pouvais m'eclairer la dessus svp

merci Vini.

 

 

 

 

 

Réponses apportées à cette discussion

Par Vini  -  Le 14/04/2009 12:26  -  Haut de page  - 

Re !

Bon je vais mes recherches à coté comme d'hab !

La **SPL **m'interesse beaucoup et je veux pouvoir la comprendre et l'utilisé au mieux de mes possiblitée !

Emac je reviens donc avec ma classe Collection ou j'ai implémenté plusieurs interface !

d'après ce que j'ai compris de la l'interface **ArrayAccess **c'est que l'on peux rendre un tableau comme un objet !

je penses aussi que je dois créer un la class ResultSet mais j'ai encore du mal à comprendre sont interet ? je penses en revenche qu'elle doit implementé l'interface Iterator puisque je vois souvent

$rs->next();

je penses que sont but est de traiter la collection ? voici la class collection que j'ai fais peux tu me donner ton avis la dessus stp ?

 

<?php
 require_once('interfaces/iCollection.class.php');
 class Collection implements Iterator, iCollection, Countable, ArrayAccess
 {
   private $collection = array();
   /**
    * Ensures that this collection contains the
    * specified element (optional operation).
    *
    * @access public
    * @param Object $o
    * @return void
    *
    */
   public function add($o)
   {
     $this->collection[] = $o;
   }
   /**
    * Removes all of the elements from
    * this collection (optional operation).
    *
    * @access public
    * @return void
    *
    */
   public function clear()
   {
     $this->collection = array();
   }
   /**
    * Returns true if this collection
    * contains the specified element.
    *
    * @access public
    * @return bool true | false
    *
    */
   public function contains($o)
   {
     if(in_array($this->collection, $o))
     {
       return true;
     }
     return false;
   }
   /**
    * Compares the specified object with
    * this collection for equality.
    *
    * @access public
    * @param Object $o
    * @return bool
    *
    */
   public function equals($o)
   {
     foreach($this->collection as $object)
     {
       if($object === $o)
       {
         return true;
       }
       return false;
     }
   }
   /**
    * Returns true if this collection contains no elements.
    *
    * @access public
    * @return mixed false | null
    *
    */
   public function isEmpty()
   {
     if($this->count() >= 0)
     {
       return false;
     }
     return null;
   }
   /**
    * Removes a single instance of the specified
    * element from this collection,
    * if it is present (optional operation).
    *
    * @access public
    * @return array $collection
    *
    */
   public function remove($o)
   {
     unset($this->collection[array_search($o, $this->collection)]);
     return array_shift($this->collection);
   }
   /**
    * Returns the number of elements in this collection.
    *
    * @access public
    * @return int $collection
    *
    */
   public function size()
   {
     return sizeof($this->collection);
   }
   /**
    * Return the number total of the collection
    *
    * @access public
    * @return int $collection
    *
    */
   public function count()
   {
     return count($this->collection);
   }
   /**
    * Rewind the Iterator to the first element.
    *
    * @access public
    *
    */
   public function rewind()
   {
     reset($this->collection);
   }
  /**
   * Move forward to next element.
   *
   * @access public
   *
   */
   public function next()
   {
     return next($this->collection);
   }
  /**
   * Return the key of the current element.
   *
   * @access public
   *
   */
   public function key()
   {
     return key($this->collection);
   }
  /**
   * Return the current element.
   *
   * @access public
   *
   */
   public function current()
   {
     return current($this->collection);
   }
  /**
   * check is there is a current element after call to rewind() or next().
   *
   * @access public
   *
   */
   public function valid()
   {
     return ($this->current() < count($this->collection));
   }
  /**
   *
   * @param $offset
   * @return unknown_type
   */
   public function OffsetExists($offset)
   {
     return isset($this->collection[$offset]);
   }
  /**
   *
   * @access public
   * @param $offset
   * @return unknown_type
   *
   */
   public function offsetSet($offset, $value)
   {
     return $this->collection[$offset] = $value ;
   }
  /**
   *
   * @access public
   * @param $offset
   * @param $value
   * @return unknown_type
   *
   */
   public function offsetGet($offset)
   {
     return $this->collection[$offset];
   }
  /**
   *
   * @access public
   * @param int $offset
   * @return void
   *
   */
   public function offsetUnset($offset)
   {
     unset($this->collection[$offset]);
   }
} /*** End class ***/
?>

voila je vais avancer par étape jusqu'a j'arrive à faire une Collection correct même si au debut elle n'est pas encore super optimisé ! mais faut bien commencer quelque part !

d'ailleurs j'ai encore du mal à saisir le concept du hydrate ! mais bon je vais me prendre la tete à fin de mieux le comprendre!

 

merci [^-^]

 

 
Par damien  -  Le 02/07/2009 17:39  -  Haut de page  - 

Pour information, j'ai trouvé récemment un autre tutoriel sur un blog qui montrait un exemple de classe "Collection" implémentant un iterateur, ça sert de complément au tutoriel déjà présent sur le site.

 

L'url est la suivante : http://www.zen-in-progress.com/classe-php-conteneur-dobjet/

 

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |