Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/08/2007, 17h35   #1
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 29
Points : 29
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..
estampille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 18h39   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

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

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
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 !
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 19h13   #3
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 29
Points : 29
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 :
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
estampille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 19h38   #4
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

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

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
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.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 23h13   #5
Inactif
 
Avatar de CR_Gio
 
Inscription : septembre 2005
Messages : 1 196
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 1 196
Points : 1 201
Points : 1 201
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 :
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 :
Citation:
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 ...
CR_Gio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 16h19   #6
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 100
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 100
Points : 29
Points : 29
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
estampille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h56.


 
 
 
 
Partenaires

Hébergement Web