[POO] class news

Rechercher

[POO] class news

Par saturn1  -  2 reponses  -  Le 06/12/2008 14:32  -  Editer  - 

bonjour j'ai fais un script de news en oo. Je voulais juste savoir comment l'améliorer.

PS : Si il y a pleins de défaut merci de ne citer que les principals et que je corrige au fur et à mesure.PS2 : Si vous pouvez donner un exemple de code pour expliquer quelque chose pour que je comprenne mieux.

MERCI,voici le code:


 

Réponses apportées à cette discussion

Par Emacs  -  Le 07/12/2008 02:27  -  Haut de page  - 

Salut Saturn1,

Tu t'améliores mais il y'a quand même un gros soucis avec tes deux classes. En effet, dans le cas où tu récupères un certain nombre N de news, tu fais effectivement N+1 requêtes au lieu d'en faire qu'une seule. A chaque fois que tu construis une news tu vas chercher ses infos dans la BDD avec son ID alors que tu as déjà toutes ses infos au moment de la première requête.

Il faut que tu fasses quelque chose comme ça :

class News {
  private $_titre;
  private $_auteur;
  private $_contenu;
  private $_date;
  public function hydrateFromArray(Array $news)
  {
    foreach ($news as $key => $value)
    {
      if (property_exists(get_class(), '_'. $key))
      {
        $this->_$key = $value;
      }
    }
  }
}
class NewsManager {
  public function getAll() {
    $QS_all_news = mysql_query("SELECT * FROM news ORDER BY id DESC");
    while($D_news = mysql_fetch_assoc($QS_all_news)) {
      $oNews = new News();
      $oNews->hydrateFromArray($D_news);
      $news[] = $oNews;
    }
    return $news;
  }
}

Avec ça, tu ne fais plus qu'une seule requête. Par contre méfie toi. Je te conseille de mettre une limite dans ta requête car si tu rappatries trop d'objets, tu vas devoir les créer et stocker en mémoire. Si ton nombre d'objets en mémoire devient trop important, tu auras des erreurs.

++

Hugo.

 
Par saturn1  -  Le 07/12/2008 12:21  -  Haut de page  - 

thx!!!

 

Ajouter une réponse à la discussion

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

Identifiez-vous
Join |  ID/MDP? |