Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
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 12/09/2007, 10h49   #1
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
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 :
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 :
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+
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 17h09   #2
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
J'ai testé les design pattern factory et singleton, pas de soucis d'adaptation de mes objets.

Ca roule...
__________________
Développeur indépendant sur technos Web à votre service
speedev 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 05h12.


 
 
 
 
Partenaires

Hébergement Web