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 :

2 objets personnels manipulant PDO [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut 2 objets personnels manipulant PDO
    Bonjour,

    Je me suis mis à PDO depuis quelques mois tout en me mettant à la POO (php5) et j'en suis arrivé à avoir développé deux objets personnels qui manipulent PDO :

    - DBConnexion()
    - DBRecord()

    DBConnexion est un objet qui créer une instance PDO, il ouvre une connexion à une base de données.

    DBRecord est un objet que je créer pour chacune des requêtes que j'effectue. Il me permet de disposer d'autant de traitements de suivi que je souhaite pour chaque manipulation sur la base de données.

    Voici un exemple simplifié de l'utilisation de mes objets :

    conf.php :
    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
     
    define('_USER', "machin");
    define('_PASS', "bidule");
    define('_DATABASE', "dbsecret");
    define('_DSN1', "mysql:host=localhost;dbname="._DATABASE);
     
    // Je ne créer toujours qu'un seul et unique objet DBConnexion
    $cnx = new DBConnexion(_USER, _PASS, _DSN1, $pdo_conf_cnx);
    // $pdo_conf_cnx est un array qui contient plusieurs booléen que je
    // contrôle au sein de mes 2 objets
    // si mode DEBUG actif par exemple j'affiche les erreurs sur l'objet PDO avec
    // les Exceptions e->getMessage() etc...
    // si mode ACTION actif j'affiche toutes les actions qui s'effectuent
    // si mode LOG actif je loggue les erreurs
    // etc...
    index.php :
    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
     
    require("conf.php");
    // j'ouvre une connection, DBconnexion créer un objet PDO
    if ($cnx->connect())
    {
    	// Je prépare un objet de requête en lui passant la connexion courante
    	$rec_usr = new DBRecord($cnx->pdo);	
    	$req = "SELECT usr_id FROM user WHERE usr_log = ".q($login);
    	$req = $rec_usr->read($req);	
    	// SELECT==>read() = pdo->query()
    	// INSERT ou UPDATE ==>write() = pdo->exec()
    	// etc...
    	if ($req)
    	{
    		$resultat = $rec_usr->fetch_assoc($req);
    		// = FetchAll ( en mode ASSOC );
    		$_SESSION["ID_login"] = $resultat[0]["usr_id"];
    	}
    }
    else
    {
    	redirect_db_error();
    }
    J'utilise toutes les fonctions PDO au sein de mes objets : FetchColumn CountRows(), prepare(), BindParam(). Tout fonctionne bien.
    J'apprécie très nettement leur utilisation et je me vois mal m'en défaire maintenant.

    Question 1 :
    - Sachant que je les aient créés pour pouvoir EFFECTUER DES TRAITEMENTS DE SUIVI ET DE CONTROLE pour chaque manipulation sur la base de données, est-ce judicieux selon vous ? Je manque de notions Objet pour évaluer mon développement.

    Question 2:
    - Etant donné que l'objet PDO est natif une fois activé, ai-je créer une limitation à son utilisation en l'ayant encapsulé dans deux objets ? Par exemple si je veux créer une classe utilisateur, je vais devoir utiliser mes objets au sein de cette classe plutôt que de directement utiliser PDO. Quelque part je me dis que j'ai peut-être "réinventé la roue" mais je ne pense pas vu que mon code est nettement allégé par rapport à une utilisation de PDO sans passer par mes objets.

    Merci

    A+

  2. #2
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    J'ai testé les design pattern factory et singleton, pas de soucis d'adaptation de mes objets.

    Ca roule...

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

Discussions similaires

  1. [BO 51] Objets personnel dans rapports
    Par logica dans le forum Deski
    Réponses: 2
    Dernier message: 19/03/2008, 23h42
  2. BO 5.1.9 - Erreur QP0027 - Objet personnel
    Par Magohamoths dans le forum Deski
    Réponses: 2
    Dernier message: 15/01/2008, 14h35
  3. création Objets personnels
    Par pendulaire dans le forum Deski
    Réponses: 4
    Dernier message: 07/05/2007, 10h38
  4. Objet personnel - Calcul 1er et dernier jour du mois
    Par amiral59 dans le forum Deski
    Réponses: 8
    Dernier message: 26/04/2007, 08h42
  5. [V 6.5.1] Objets personnels
    Par pc75 dans le forum Deski
    Réponses: 11
    Dernier message: 07/12/2006, 12h01

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