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 :

Classes simples et base de données


Sujet :

Langage PHP

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut Classes simples et base de données
    Bonsoir,

    Je débute tout juste le PHP et MySQL (depuis quelques jours), mais j'avais déjà pas mal d'expérience en C++, et, de ce fait, je tends à tout penser en terme d'objets, même en PHP.

    Première question > Peux-t'on penser en PHP de la même façon que dans un autre langage objet, ou y a t-il des considérations à prendre en compte ?

    Deuxième question > Le point qui me rebute le plus pour le moment est la gestion des bases de données. Par exemple, imaginons une simple classe User qui gère un utilisateur, avec un destructeur permettant de définir le login et le mot de passe, et une fonction SetPassword permettant de changer le mot de passe. Est-il censé (et bien) de directement appeler dans le constructeur et la fonction SetPassword (de manière générale, dans n'importe quelle méthode d'une classe), les requêtes SQL ? Ou alors est-ce mieux de récupérer les données en dehors de la classe pour effectuer les requêtes en dehors de la classe ?

    Merci de vos réponses.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Citation Envoyé par Bakura Voir le message
    Première question > Peux-t'on penser en PHP de la même façon que dans un autre langage objet, ou y a t-il des considérations à prendre en compte ?
    Oui tu peux tout faire en PHP mise a part la surcharge des methodes et des petites trucs. Mais l'essentiel est bien là.
    http://www.php.net/manual/fr/language.oop5.php


    Citation Envoyé par Bakura Voir le message
    Deuxième question > Le point qui me rebute le plus pour le moment est la gestion des bases de données. Par exemple, imaginons une simple classe User qui gère un utilisateur, avec un destructeur permettant de définir le login et le mot de passe, et une fonction SetPassword permettant de changer le mot de passe. Est-il censé (et bien) de directement appeler dans le constructeur et la fonction SetPassword (de manière générale, dans n'importe quelle méthode d'une classe), les requêtes SQL ? Ou alors est-ce mieux de récupérer les données en dehors de la classe pour effectuer les requêtes en dehors de la classe ?
    Ca c'est pas lié à PHP, c'est plus un problème de conception. Ca dépendra beaucoup du niveau d'abstraction que tu veux mettre en place.
    Tu peux très bien avoir toutes les requetes dans ta classe. Ou bien créer une classe DB qui s'occupe des accés à ta base. Ou encore utiliser le pattern Active Record http://fr.wikipedia.org/wiki/Active_..._conception%29
    Tu as une multitude de choix.

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Oui tu peux tout faire en PHP mise a part la surcharge des methodes et des petites trucs. Mais l'essentiel est bien là.
    http://www.php.net/manual/fr/language.oop5.php
    Ce n'était pas vraiment les fonctionnalités objet du PHP que je souhaitais savoir (le bouquin que j'ai, PHP 5 Avancé, explique ça plutôt bien, je ne me suis jamais servi de l'héritage multiple, de toute façon), mais plutôt s'il y avait des choses à éviter à faire (par exemple, j'ai tendance à encapsuler le plus possible en C++, est-ce qu'il y a des cas en PHP ou l'encapsulation est à proscrire ? Mais effectivement il s'agit plus d'une question de conception.

    Ca c'est pas lié à PHP, c'est plus un problème de conception. Ca dépendra beaucoup du niveau d'abstraction que tu veux mettre en place.
    Tu peux très bien avoir toutes les requetes dans ta classe. Ou bien créer une classe DB qui s'occupe des accés à ta base. Ou encore utiliser le pattern Active Record http://fr.wikipedia.org/wiki/Active_..._conception%29
    Tu as une multitude de choix.
    Merci pour le pattern, je vais voir ça .

  4. #4
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Salut,

    Merci pour tes réponses, c'est exactement ce que j'attendais. C'est vrai que j'avais tendance à faire des classes relativement génériques en C++... je crois qu'il ne faut pas abuser des abstract et interface en PHP alors .

    En fait, en y réfléchissant, je vois quand même moins l'intérêt de certaines classes en PHP (dans un contexte web, je veux dire). Par exemple, toujours sur la classe User. On pourrait imaginer récupérer les données de l'utilisateur (login, pass, e-mail...) via une requête SQL, mais une fois cette requête effectuée et les résultats récupérés, l'instance de la classe ne sert plus à grand chose puisque, théoriquement, dans un autre script, il faudra de nouveau récupérer ces informations et créer un autre objet. L'utilité est donc assez réduite (à moins de pouvoir rendre la portée d'une variable récupérée dans un script à TOUS les autres scripts... Ainsi le script demandant s'il souhaite modifier son e-mail pourra afficher son e-mail sans refaire une demande SQL juste en récupérant l'instance de la classe User,... mais est-ce possible ? avec le mot-clé global ?).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    oui le mot clé global le permet. Mais dans le cas d'une authentification il vaudrait mieux utiliser une variable de $_SESSION, puis d'écrire dans une table les données nécessaires à sauvegarder avec time d'expiration.
    On peut créer une classe session qui sera global et te permet de gérer la session utilisateur.
    Pour en revenir aux classes abstraites voir interface cela est surtout utile dans de grands projets, et peut-être que à ce moment là l'utilisation de framework comme symfony ou zend framework sont plus adaptés à ce type de dev en php.
    Je nuancerai pour les classes abstraites qui permettent d'implémenter de façon orthodoxe les design patterns. Sur cet 'excellent' site il y'a de très bons articles sur les l'implémentation de pattern les plus usuels en php. PHP 5.2.2 et +, permettent une implémentation objet plus strict.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    PHP sert dans un temps le plus court possible, a envoyer a un visiteur, une page html, avec ces images textes graphiques etc ... tant que PHP n'a pas terminé son travail moi, visiteur j'ais une page blanche avec un sablier ... et ça on aime pas.
    C'est excatement ça, à mon avis il faut que tu lises quelques articles sur les environnement web. Les bonnes et les mauvaises pratiques:
    $_SESSION
    $_COOKIE
    $GLOBALS
    Cache

    J' avais écris (et sa marche trés bien) l'affichage aléatoire d'un zoom dans la fractale de Mandelbrot . résultat catastrophique ... alors qu'en C , c'est un régal.
    Oui il vaut mieux le deléguer à un service écrit C, PHP ne fera que rendre le résultat.

Discussions similaires

  1. Classes de la base de donnée introuvable à l'exécution
    Par xavynfive dans le forum Langage
    Réponses: 12
    Dernier message: 02/09/2010, 16h21
  2. Passage d'un diagramme de classe a une base de donnée relationnelle
    Par Midoov dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 07/06/2010, 11h47
  3. classe externe et base de données
    Par frodon sacquet dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 19/10/2009, 14h24
  4. Nom des classes dans la base de données.
    Par chriscoolletoubibe dans le forum JPA
    Réponses: 3
    Dernier message: 14/09/2009, 10h09
  5. diagramme de classe pour un base de donnée
    Par gentelmand dans le forum Diagrammes de Classes
    Réponses: 5
    Dernier message: 23/05/2009, 00h30

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