Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 11/04/2011, 03h00   #1
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
Par défaut La fonction __construct

Bonjour,

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

Code :
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
isitien est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/04/2011, 03h55   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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 :
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
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 04h54   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 06h35   #4
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
et qu'elle est la meilleur methode de connexion, est ce en POO ou bien MySQLi?
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 09h48   #5
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 16h54   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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).
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 02h40   #7
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
et on peut utiliser MySQLi avec phpmyadmin, c'est ca? sinon c'est quoi la difference?
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 02h54   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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).
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 03h31   #9
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 843
Points : 1 318
Points : 1 318
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...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 04h04   #10
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
alors je peux utiliser PDO avec MySQLi et PHP en terme de class, c'est la meilleur methode que PHP + MySQL?
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 06h02   #11
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 843
Points : 1 318
Points : 1 318
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.
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 06h55   #12
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
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
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 07h27   #13
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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).
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 07h43   #14
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
donc je me dirige vers MySQLi avec les class POO
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 10h20   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
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.

Citation:
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 17h59   #16
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
@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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 03h45   #17
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
merci pour vos reponses, il faut aussi compter sur l'hebergeur s'il supporte MySQLi ou non
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 03h53   #18
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 06h58   #19
Membre du Club
 
Inscription : janvier 2007
Messages : 410
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 410
Points : 56
Points : 56
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
isitien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 10h38   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h39.


 
 
 
 
Partenaires

Hébergement Web