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 :

Idée pour amélioration de code


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut Idée pour amélioration de code
    Bonjour à toutes / tous,

    Je sollicite votre aide pour une amélioration de structure de code.
    En début de site, j'instancie plusieurs Connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Conn1 = new CConnexion(xxx);
    $Conn2 = new CConnexion(xxx);
    Ensuite, je créé des objet divers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objet = new CObjet(xxx);
    Et dans mon constructeur de CObjet, je dois faire une requete donc j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global $Conn1;
    $Conn1->execute(xxx);
    Apparament, les variables globales, c'est pas la panacée (d'apres ce que j'ai pu lire ici et la).
    Mais dans mon cas, comment faudrait il faire à votre avis ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Passer la connexion en paramètre du constructeur ?

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Un singleton serrai idéal pour ne pas utiliser de variable global

    @+

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Celira :
    Passer la connexion en parametre du constructeur, c'est assez lourd au niveau du code non ?
    Surtout qu'un meme objet peut appeler plusieurs objets de connexion (qui pointent sur des BD distinctes)

    Jamais203 :
    Le principe du singleton, c'est bien pouvoir n'instancier qu'une fois la classe non ?
    Dans mon cas cela ne marche pas

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par Xenon03
    Bonjour,

    Celira :
    Passer la connexion en parametre du constructeur, c'est assez lourd au niveau du code non ?
    Surtout qu'un meme objet peut appeler plusieurs objets de connexion (qui pointent sur des BD distinctes)
    C'est pourtant à mon sens la solution la plus propre pour manipuler plusieurs Objets Connexion différents dans une même procédure.

    L'inconvénient (peut être) n'est pas la lourdeur, c'est le concept en lui même qui donne l'impression d'être plus compliqué, car il demande de prévoir cet Objet Connexion à toutes ces fonction/Objets.
    Mais coté lourdeurs (performance j'entends) il en est rien, car depuis Php5, tout Objet passe par référence.


    Le gros inconvénient des variables globales (variables, Objet, ...), c'est le manque cruel de concept dans son application, en faite il n'y en a pas.

    - On a besoin d'accéder à une variable ou un Objet dans une fonction ou une méthode de classe -> allez hop, on la déclare en globale et l'affaire est réglée, on l'exploite.
    Un jeu d'enfant.

    Cependant, pour bien se rendre compte des dégâts d'un tel raisonnent, il faut juste pousser les choses à l'extrême, c'est à dire de créer des fonctions ou méthodes de classe sans l'ombre d'1 paramètre, donc de déclarer en global toutes variables ou Objets dans celles-ci qu'on aurait besoin.
    C'est le souk 100% garanti en un rien de temps, c'est tout simplement ingérable (hormis pleins d'autres inconvénients encore).

    Pour les singletons c'est pas loin d'être la même chose, à la grosse différence tout de même qu'on prendra la précaution de rajouter une sur-couche de code pour se garantir que ce singleton soit réellement unique (genre clonage non autorisé), chose impossible pour une déclaration globale.
    Si bien sûr un singleton s'y prête.


    Surtout qu'un meme objet peut appeler plusieurs objets de connexion (qui pointent sur des BD distinctes)
    Peux tu en dire plus sur ces Bdd distincts ?
    Quel est le ou les SGBD ? (MySQL, ou autre)
    Les drivers/pilotes sont ils réellement différents ?

    Sauf erreur, mais si tu as un seul SGDB comme MySQL contenant plusieurs Bases, la connexion à ce SGBD est le même, il n'y a donc pas besoin de créer plusieurs connexions différentes, une seule suffit.
    Il suffit de "préfixer" le nom de la Base de Données dans la requête SQL.
    Genre :
    SELECT bdd1.table1.champ1, bdd2.table1.champ1 etc, etc ...


    Faut voir.

Discussions similaires

  1. [XL-2007] Besoin d'aide pour améliorer mon code copier-coller
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2014, 16h14
  2. [Débutant] idée pour améliorer mon code ?
    Par Imène_23 dans le forum MATLAB
    Réponses: 7
    Dernier message: 27/08/2011, 23h54
  3. Votre avis pour améliorer mon code (opérations matricielles)
    Par Schopenhauer dans le forum Débuter
    Réponses: 42
    Dernier message: 17/09/2010, 19h25
  4. [AJAX] Aide pour amélioration de code dans le cas où javascript pas accepter
    Par lemirandais dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/11/2008, 18h47
  5. Conseil pour améliorer ce code
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/11/2008, 13h46

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