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 :

question théorique sur les méthodes [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut question théorique sur les méthodes
    Bonjour,
    Je voudrais connaître votre avis sur une question concernant les classes et les méthodes.
    J'ai une classe cl_image, avec une méthode getAllImages qui va chercher une liste de résultats.
    Selon vous, que vaut-il mieux faire, et est-ce cela a une incidence (notamment niveau performances) ?
    1) faire une méthode getAllImages qui va prendre toutes les infos sur les images (nom, id, taille,etc, tout ce qui est stocké dans la base concernant cette image)
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function getAllImages () {
     
    	$allImages = array();
    	$sql = "select image_id, image_comment, image_taille from images";
    	$req = mysql_query($sql);
    	while($row=mysql_fetch_object($req)) {
    		$allImages[$row->image_id]["comment"] = $row->image_comment;
    		$allImages[$row->image_id]["taille"]= $row->image_taille;
    	}
     
    	return $allImages;
    }
    2) Ou bien plutôt utiliser getAllImages pour aller chercher juste un ID et ensuite utiliser une méthode pour aller chercher des infos à partir de cet ID ?
    Ex:
    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
    function getAllImages () {
     
    	$allImages = array();
    	$sql = "select image_id from images";
    	$req = mysql_query($sql);
    	while($row=mysql_fetch_object($req)) {
    		$allImages[] = $row->image_id;
    	}
     
    	return $allImages;
    }
    function getImageInfo ($image_id) {
    	$imageInfo= array();
     
    	$sql = "select image_taille, image_comment from images where image_id=".$image_id;
    	$req = mysql_query($sql);
     
    	$row = mysql_fetch_object($req);
    	$imageInfo["taille"] 	= $row->image_taille;
    	$imageInfo["comment"] = $row->image_comment;
     
    	return $imageInfo;
    }
    Merci pour votre participation.

    Mariek

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Dans ta deuxième solution, la méthode all, n'est pas tout a faits correcte, tu oublies l'appel à getImagesInfos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function getAllImages () {
     
    	$allImages = array();
    	$sql = "select image_id from images";
    	$req = mysql_query($sql);
    	while($row=mysql_fetch_object($req)) {
    		$allImages[] = $this->getImageInfo($row->image_id);
    	}
     
    	return $allImages;
    }
    Pour ta question de performance, disons que tu as 100 photos :

    Vaux-t-il mieux faire 1 appel à la db et avoir toutes les infos d'un coup ou faire 100 appels à la db pour avoir 1 info à la fois

    Par contre dans ton deuxième expemple, est que tu pourras récupérer 1 info à la fois, ce qui pourras être intéressant dans certain cas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse.
    Dans la 2e version, je n'appelle pas la 2e méthode dans la 1e, mais dans mon script php, de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $AllImages = $cl_images->getAllImages();
     
    foreach($AllImages as $image_id) {
         $curr_icon = $ps_icon->getIconInfo($row->icon_id);
         [...]
    }
    Tu penses qu'il vaut mieux l'appeler dans la première méthode ?
    Mais tu réponds à ma question : il vaut mieux taper dans la base une fois que 100 fois, tu as raison. merci !

    Pour récupérer un seul résultat, il suffit d'ajouter un paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // $cond : string condition (par exemple : " where image_id=5")
    function getAllImages ($cond="") {
     
    	$allImages = array();
    	$sql = "select image_id, image_comment, image_taille from images".$cond;
    	$req = mysql_query($sql);
    	while($row=mysql_fetch_object($req)) {
    		$allImages[$row->image_id]["comment"] = $row->image_comment;
    		$allImages[$row->image_id]["taille"]= $row->image_taille;
    	}
     
    	return $allImages;
    }
    Je pense même utiliser 3 paramètres, un pour la condition, un autre pour l'ordre et un 3e pour la limite, comme ça ma méthode est complètement souple et je peux l'utiliser pour des listes paginées et ordonnées.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Personnellement, je n'aime pas trop ta façon de vouloir faire.

    Je préfère avoir plusieurs méthodes, qui soit bien clair e qui ne font qu'un chose, que d'avoir des méthodes, qui vont faire a peu près tout.

    Question de clarté !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Personnellement, je n'aime pas trop ta façon de vouloir faire.

    Je préfère avoir plusieurs méthodes, qui soit bien clair e qui ne font qu'un chose, que d'avoir des méthodes, qui vont faire a peu près tout.

    Question de clarté !
    Je débute en POO, je n'ai pas forcément de bons réflexes. J'ai tendance à vouloir compresser un maximum, par exemple
    Est-ce que en POO, il vaut mieux avoir plusieurs méthodes qui font à peu près la même chose, mais pas complètement (par exemple mes deux méthodes de l'exemple 2) ?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Tu dois surtout éviter des situation qui pourrais compromettre la sécurité.

    Et oui je préfère deux méthodes.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour tous ces éclaicissements !

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

Discussions similaires

  1. Petite question théorique sur les déclarations
    Par NeuroTransMetteur dans le forum Général VBA
    Réponses: 3
    Dernier message: 15/03/2012, 08h04
  2. Question théorique sur les éditeur WYSIWYG
    Par CactO_o's dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 07/02/2010, 19h32
  3. Réponses: 3
    Dernier message: 17/09/2008, 13h52
  4. Réponses: 3
    Dernier message: 04/04/2008, 18h02
  5. Question théorique sur les normales
    Par Pedro dans le forum DirectX
    Réponses: 5
    Dernier message: 16/10/2005, 19h24

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