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 :

[POO] Listing avec des objets


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Points : 61
    Points
    61
    Par défaut [POO] Listing avec des objets
    Bonjour j'ai une question concernant la programmmation objet en php.
    Donc je cré mes objets normalement du style:

    class user{

    ....toutes les methodes et accesseurs qui vont bien..

    initialisation($id){
    ici je recupere tousles parametres de la base de données et j'initialise mon objet..

    }


    }

    quand je fais des manipulations sur un "user" c'est tres bien
    mais quand je dois faire le listing de tous les 'user' alors je vois pas l'interet d'un objet vu que j'ai besoin de faire une requete BDD pour recupérer l'id d'un objet afin de l'initialiser, autant en profiter pour recuperer toutes les autres infos.. vu que si j'instancie mon objet ,je refais quasi la meme requete bdd et ce pour tous les objets..

    bref si vous avez compris ma question dites moi si:
    - c'est comme ca et puis tant pis , quand les objets sont plus compliqué on voit la différence.
    - je m'y prends mal.
    - mauvaise utilisation...
    ...


    pour resumer, je ne vois pas l'interet d'un objet lors d'un listing..

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Je ne suis pas sûr de comprendre ce que tu veux dire! Tu as une classe User et elle te permet de faire des requêtes sur la table user? Dans ce cas tu n'as cas faire 2 méthodes, une qui s'appelle par exemple getUser(id) qui te retourne un utilise unique en fonction de son id et une autre pour le listing getAllUsers() qui te retourne une array avec tous les utilisateurs !
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Points : 61
    Points
    61
    Par défaut
    en fait ce n'est pas une question pour un probleme précis mais plus sur la bonne utilisation des objets.

    en général je fais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class contenu{
        var $contenu_id;
        var $contenu_page;
        // ...
     
        // les accesseurs du type:
        function get_contenu_id(){
            return $this->contenu_id;
        }
     
        function set_contenu_id($i){
            $this->contenu_id=$i;
        }
     
        // ......
     
        //le constructor
        function __construct(){
            $this->contenu_id=-1;
        }
     
        //l'initialisation
        function initialisation($id){
            $select="SELECT * 
                FROM contenu 
                WHERE contenu_id='".$id."' ";
            $query=mysql_query($select);
            $data=mysql_fetch_array($query);
     
            $this->contenu_id=$id;
            $this->contenu_page=formatOut($data['contenu_page']);
            // ...
        }
     
    }
    bref quand je veux faire un listing quel est l'intérêt de faire une requête pour récupérer les différents id, afin d'instancier les objets, de les initialiser, (donc on refait la requête... , plutôt que de direct récupérer tous les paramètres direct dans la première requête et ne pas passer par l'objet..

    tu me dis: rajouter une méthode getAllUser().. mais cette méthode n'a aucun besoin d'être déclarée dans l'objet mais est simplement une fonction accessible de n'importe ou est pas forcement que de l'objet..
    bref ..
    je trouve que l'utilisation des objets en php n'est pas forcément logique pour les listings..
    donc c'est pour savoir si c'est normal ou si ça vient de moi !
    MErci

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Je ne comprend pas très bien ton "initialisation" et je ne suis pas sûr que tu aies très bien compris le concept objet! As-tu déjà programmer avec un langage totalement objet comme Java ou C# ?

    Car d'après ce que je vois tu fais une classe d'abstraction pour accéder à une table de ta base de données mais si c'est vraiment ça l'implémentation n'est pas correcte.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonsoir,

    Je pense que tu veux tout faire d'un coup ^^

    Peut etre que tu ne devrai pas mettre de requete dans ton object user...
    je voi le truc plutot comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //requete BD
    /*
    on recuper les id user qui nous interresse avec leur info/parametre attaché si besoin est
    */
     
    //instancie les object user
    /*
    on créer nos user grace au info fourni par la base de donnée
    */
     
    //On manipule nos object user
    /*
    l'user grandi d'un jour
    l'user va se faire couper les cheuveux
    l'user va faire les course au super marché
    l'user sait faire bcp de chose dites donc :p
    */
     
    //requete BD
    /*
    on sauvegarde toute les actions que l'user a fait aujourd'hui
    ( apres une dur journée de labeur  : un repos bien mérité =)
    */
    Tu peu faire une class pour effectuer les requette vers la base de donné ( ca fait plus mieux :p )

    Encore une tite chose par raport a :
    var $contenu_page;
    // les accesseurs du type:
    function get_contenu_id(){
    return $this->contenu_id;
    }
    $contenu_page est un propriété public ... get_contenu_id() ne sert a rien et meme au contraire, il allourdi le code, il ralenti l'execution bref rien de bon ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 100
    Points : 61
    Points
    61
    Par défaut
    ben je vois pas trop la différence...

    mon initialisation sert à instancier l'objet grâce à l'id que je viens de récupérer dans ma BDD.

    ensuite j'utilise l'objet et toutes ces méthodes, puis a la fin je fais un petit update pour sauvegarder l'objet dans son nouvel état...

    Citation Envoyé par Yoteco
    Car d'après ce que je vois tu fais une classe d'abstraction pour accéder à une table de ta base de données mais si c'est vraiment ça l'implémentation n'est pas correcte.
    Je ne comprends pas?...

    ou peut être alors : ON fait une requête dans la BDD pour tout récupérer, on instancie l'objet par des milliers de "set" et après on utilise l'objet..
    c'est ça?

    qu'est ce qui est correcte..

    désolé j'ai l'impression de ne pas m'y connaitre alors que j'ai pas mal programmé en java (..bon ça fait un petit moment..) mais soit c'est le temps soit c'est php et j'ai du mal à saisir quelques points importants..
    zauriez pas un exemple concret de la bonne utilisation? j'ai trouvé pas mal de lien différent sur google..

    merci

Discussions similaires

  1. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  2. Réponses: 2
    Dernier message: 28/03/2006, 03h36
  3. [Librairie] Mettre en page une liste avec des puces
    Par karibouxe dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 27/03/2006, 17h53
  4. [Débutant] Liste avec des valeurs associées aux string
    Par Bouillou dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2006, 18h11
  5. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 11h47

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