IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ne pas créer deux fois un même objet


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Ne pas créer deux fois un même objet
    Bonjour

    Lors de la création d'un objet, je cherche à m'assurer qu'il n'ait pas déjà été créé.

    Par exemple :
    J'ai une classe Joueur. Lorsque je créé un joueur, je passe son id en paramètre de mon constructeur et je fais la requête sql qui correspond pour initialiser toutes ses propriétés.
    Maintenant il peut arriver qu'un même joueur soit créer deux fois lors d'un chargement de page (on s'en ai servi pour une action quelconque et il apparait ensuite dans un classement plus bas dans la page, par exemple), et donc on va faire deux fois les requêtes et on va avoir deux objets distincts, alors qu'une seule fois suffirait et que c'est censé s'agir du même objet.

    J'ai donc pensé faire un tableau associatif, statique dans mes classes.
    Par exemple
    static public $liste_joueur = array()

    Quand on créé un joueur, s'il n'est pas dans la liste, on ajoute l'objet avec un Joueur::$liste_joueur[$son_id] = $this;

    Par contre, je ne vois pas comment lui dire que si Joueur::$liste_joueur[$son_id] existe déjà, alors l'objet en cours de création doit justement être Joueur::$liste_joueur[$son_id] ...
    Est ce que la méthode __construct() peut renvoyer un objet de mon choix?


    Donc
    - Est ce que mon problème est clair?
    - Est ce la bonne approche ou y a t'il un système plus simple pour s'assurer qu'on ai pas d'objet en doublon?

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Il existe une façon plus simple pour s'assurer de l'unicité d'une instance : le singleton (motif de conception ou design pattern).

    http://www.php.net/manual/fr/language.oop5.patterns.php
    http://dev.petitchevalroux.net/php/b...n-php.110.html

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    C'est exactement ce que je souhaitais, je n'y ai simplement pas pensé

    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/06/2012, 03h24
  2. Ne pas avoir deux fois la même valeurs
    Par diki38 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/01/2010, 11h45
  3. [AC-2007] Ne pas imprimer deux fois la même chose
    Par Flup dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 24/11/2009, 20h47
  4. [Perl POO] ne pas créer deux fois le même objet
    Par seben dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2009, 21h19
  5. surcharger deux fois le même opérateur
    Par Tex-Twil dans le forum C++
    Réponses: 2
    Dernier message: 01/12/2005, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo