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

PHP & Base de données Discussion :

La fonction __construct


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut La fonction __construct
    Bonjour,

    A quoi sert la fonction __construct en POO, dans cet exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function __construct($_dbHst, $_dbUsr, $_dbPwd, $_dbNam){
            $this->_dbHst   = $_dbHst;
            $this->_dbUsr   = $_dbUsr;
            $this->_dbPwd   = $_dbPwd;
            $this->_dbNam   = $_dbNam;
        }
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    C'est le constructeur de la classe, soit la fonction qui s'exécute automatiquement et qui permet d'exploiter les variables que tu peux passer quand tu instancies ta classe.

    L'instanciation de ta classe de connexion pourrait donc ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class connect {
     
    public function __construct($_dbHst, $_dbUsr, $_dbPwd, $_dbNam){
            $this->_dbHst   = $_dbHst;
            $this->_dbUsr   = $_dbUsr;
            $this->_dbPwd   = $_dbPwd;
            $this->_dbNam   = $_dbNam;
        }
     
    // autres fonctions
     
    }
     
    $connexion = new connect('localhost','utilisateur','mot_de_passe','ma_base');
    Cela dit cet exemple est "assez moyen" car on utilise plutôt des méthodes statiques pour établir une connexion à une bdd.

    plus d'infos sur la poo ici

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Cela dit cet exemple est "assez moyen" car on utilise plutôt des méthodes statiques pour établir une connexion à une bdd.
    Ah bon ? donc PDO est "assez moyen", MySQLi aussi du-coup...

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    et qu'elle est la meilleur methode de connexion, est ce en POO ou bien MySQLi?

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    la meilleure façon c'est celle que tu maitrises le mieux. La plus élégante et celle qui te semblera la plus simple à utiliser lorsque tu auras de la bouteille c'est PDO surtout si un jour tu es amené à utiliser d'autres bases que MySql.

    ça t'évite d'écrire ta propre classe d'abstraction de base de donnée.

    EDIT: en POO on ne parle pas de fonction mais de méthode et de constructeurs.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par isitien Voir le message
    et qu'elle est la meilleur methode de connexion, est ce en POO ou bien MySQLi?
    C'est soit PDO soit mysqli mais pas mysql qui n'est plus en phase développement. Cf ce tableau (bas de page).

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    et on peut utiliser MySQLi avec phpmyadmin, c'est ca? sinon c'est quoi la difference?

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par isitien Voir le message
    et on peut utiliser MySQLi avec phpmyadmin, c'est ca? sinon c'est quoi la difference?
    Oui et les différences sont indiquées dans le tableau que je t'ai mis en lien plus haut (requêtes préparées notamment).

  9. #9
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par isitien Voir le message
    et on peut utiliser MySQLi avec phpmyadmin, c'est ca? sinon c'est quoi la difference?
    phpmyadmin est une interface web écrite en php pour gérer une bd mysql. ça te donne un EDI fenêtré qui te permet d'admisnistrer et d'exécuter un certain nombre de requêtes sql mais pas tout.

    mysqli est une extension de php qui offre une écriture procédurale (par des fonctions comme avec l'extension dépréciée qu'était mysql) et objet en même temps. Elle permet notamment l'utilisation des requêtes multiples et des procédures stockées en natif.

    PDO est aussi une extension de php qui elle offre une approche purement objet (qui ressemble à mysqli au niveau écriture) mais elle gère l'accès à d'autres types de sgbd que mysql. Elle est donc plus générique. Si tu as un projet qui peut passer de mysql à un autre sgbd ça va limiter les changement coté php à faire...

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    alors je peux utiliser PDO avec MySQLi et PHP en terme de class, c'est la meilleur methode que PHP + MySQL?

  11. #11
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par isitien Voir le message
    alors je peux utiliser PDO avec MySQLi et PHP en terme de class, c'est la meilleur methode que PHP + MySQL?
    mysqli est moins lourd que pdo pour encapsuler tes accès uniquement vers mysql en php.

    Par contre, pdo est compatible avec d'autres sgbd donc ça dépend de ce que tu as à faire...

    Pour faire simple, pdo encapsule ce que fait mysqli, son seul avantage est de standardiser les appels vers n'importe quel sgbd pour lequel il est compatible.

  12. #12
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    mysqli est moins lourd que pdo pour encapsuler tes accès uniquement vers mysql en php.

    Par contre, pdo est compatible avec d'autres sgbd donc ça dépend de ce que tu as à faire...

    Pour faire simple, pdo encapsule ce que fait mysqli, son seul avantage est de standardiser les appels vers n'importe quel sgbd pour lequel il est compatible.
    d'apres cette documentation je vois que PDO est rapide, moins de codes => lignes

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    PDO n'est pas plus rapide même que Mysql de manière absolue.
    Il faut regarder precisement de quelles requêtes on parle et de quelle configuration de PDO on utilise (requêtes préparées émulées ou natives mysql).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    donc je me dirige vers MySQLi avec les class POO

  15. #15
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Cela dit cet exemple est "assez moyen" car on utilise plutôt des méthodes statiques pour établir une connexion à une bdd.
    Utiliser un singleton pour PDO est une façon détournée de mettre l'instance de PDO dans $GLOBALS ni plus ni moins. Cette manière de faire introduit un couplage fort entre ce singleton et les objets modèle. Dans la plupart des cas, c'est vrai que ça rends service, mais si on veut être tout à fait exact, c'est la responsabilité des classes modèle de porter la référence de l'objet PDO.

    donc je me dirige vers MySQLi avec les class POO
    De toute façon, ça dépends plus de ton design que des réelles performances des extensions. Ce sont les requêtes et la complexité / lourdeur du modèle de données qui seront un facteur décisif de performance, pas le driver de connexion.

  16. #16
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    @isitien

    C'est surtout ça qu'il faut retenir :

    Citation Envoyé par ericd69 Voir le message
    PDO ... gère l'accès à d'autres types de sgbd que mysql. Elle est donc plus générique. Si tu as un projet qui peut passer de mysql à un autre sgbd ça va limiter les changement coté php à faire...
    ...moins de travail à faire quand on utilise PDO pour passer de mysql à un autre sgbd. Cela dit il est rare d'avoir besoin de changer de sgbd car c'est un choix qui se décide normalement dès l'élaboration du projet...

    Donc à toi de voir...

    On peut aussi prendre en compte la facilité d'apprentissage et d'adaptation. Si tu as l'habitude des requêtes mysql tu peux facilement passer à mysqli en mode procédural puisque c'est presque pareil. Ensuite tu peux passer à mysqli en mode POO également assez facilement puisque toutes les fonctions mysqli du manuel ont un exemple en procédural et objet. Enfin mysqli en mode objet est dans le même esprit que PDO.

  17. #17
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    merci pour vos reponses, il faut aussi compter sur l'hebergeur s'il supporte MySQLi ou non

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Oui et s'il ne supporte pas mysqli, il y a peu de chances qu'il supporte PDO. Je crois me souvenir que free ne supporte actuellement ni l'un ni l'autre.
    Cela dit free est un hébergeur de pages perso, rien d'autre. Tous les hébergements à vocation professionnelle dignes de ce nom supportent ces deux extensions.

  19. #19
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 425
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Oui et s'il ne supporte pas mysqli, il y a peu de chances qu'il supporte PDO. Je crois me souvenir que free ne supporte actuellement ni l'un ni l'autre.
    Cela dit free est un hébergeur de pages perso, rien d'autre. Tous les hébergements à vocation professionnelle dignes de ce nom supportent ces deux extensions.
    je pense pas le cas chez OVH, j'ai lu dans un des topics qu'il ne supporte pas mysqli

  20. #20
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par isitien Voir le message
    je pense pas le cas chez OVH, j'ai lu dans un des topics qu'il ne supporte pas mysqli
    OVH a mysqli et PDO et les derniere version de PHP y compris la 5.3, par contre les pilote mysql ne sont pas compiler avec mysqlnd


    Pour Free y'a PDO mais uniquement avec sqlite (2 et 3)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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