Page 1 sur 1

Utilisation d'objets pour gérer une base de données

Posté : 26 mai 2007, 21:45
par jed
Bonjour! J'ai quelques compétences en objet et je cherche à mettre en place le moyen le plus pratique possible de gérer une base de données. J'ai élaborés quelques concepts qui s'avéraient au final plus complexes lors des appels de methodes et des instanciations dans mes fichiers principaux que l'utilisation classiques des requêtes mysql. Je propose aux personnes compétences de me suggérer leurs propres points de vue quant à la création d'un tel système, afin de me mettre sur la voie. Merci!

Posté : 26 mai 2007, 21:51
par Klomac
Je me permets de te conseiller l'extension mysqli qui gères la POO nativement (http://fr.php.net/mysqli).

Ensuite je te suggères de te renseigner sur les itérateurs de la SPL (http://fr.php.net/manual/fr/ref.spl.php). Même s'il n'existe pas d'itérateur pour MySQL nativement, tu peux en créer un toi-même pour naviguer parmi des résultats de multi_query par exemple.

Enfin encore une fois pour ce qui est des fonctions basiques de MySQL, mysqli gère très bien ça en POO.

Posté : 26 mai 2007, 21:54
par Cyrano
J'ajouterais que tu pourrais aussi explorer PDO qui te permettrait de rendre ton code encore plus portable puisque des extensions PDO existent pour plusieurs bases de données, pas juste MySQL :-k

Posté : 26 mai 2007, 22:46
par jed
En fait j'évite l'utilisation de classes "préconstruites", pour ne pas sombrer dans la facilité. Quelle architecture adopteriez vous? Un objet pour une table ou un objet pour une requête?

Posté : 26 mai 2007, 23:11
par Klomac
Ben pour ma part j'adopterais l'architecture de mysqli, à savoir un objet pour une requête, un objet pour un statement, un objet pour un résultat. Mais bon à mon avis utiliser les outils proposés nativement par PHP c'est pas sombrer dans la facilité ;)

Re: Utilisation d'objets pour gérer une base de données

Posté : 26 mai 2007, 23:41
par Hubert Roksor
le moyen le plus pratique possible de gérer une base de données
j'évite l'utilisation de classes "préconstruites", pour ne pas sombrer dans la facilité
Donc tu cherches le moyen le plus pratique pour gérer une base à condition de galérer le plus possible pour l'utiliser ? Je détecte une sorte de contradiction :o

Le moyen le plus pratique c'est sûrement de prendre le driver natif qui correspond à ton serveur et de l'utiliser pour euh... exécuter tes requêtes. (ou utiliser PDO comme le suggère Cyrano, s'il y a une chance pour que tu changes de logiciels de BDD, si tu veux du challenges tu peux essayer Firebird)

Y aurait-il un point important que j'aurais raté ?

Posté : 27 mai 2007, 09:20
par jed
héhé tu n'as rien raté. J'ai prévu en effet de galérer pour construire ma classe (mais j'aime ça^^) pour qu'une fois finie il ne reste qu'une ligne de code pour accéder au résultat d'une requête. Les efforts sont (presque) toujours bien récompensés par une utilisation trés simple.

Posté : 27 mai 2007, 09:35
par Hubert Roksor
Si tu fais ça pour le sport, pourquoi pas, mais si tu cherches à créer un système super compliqué pour pouvoir faire des trucs super simples dans 6 mois j'ai bien peur que tu ne sois déçu au final (testé et approuvé).

Sinon, si tu veux accéder au contenu d'une requête en une ligne je peux te proposer ça :
$row = $mysqli->query('SELECT * FROM table WHERE id = ' . $id)->fetch_assoc();
Et si tu veux je peux te rajouter un contrôle d'erreur intégré pour quelques octets de plus :roll:
class foo extends mysqli
{
	public function query($sql)
	{
		if ($result = parent::query($sql))
		{
			return $result;
		}

		throw new Exception('Erreur MySQL: ' . $this->error);
	}
}
Ce que je veux dire, c'est que si un tel système était possible il existerait déjà et on n'aurait pas une dizaine de framework d'abstraction des données différents. Ensuite, comme je le disais, si tu fais ça pour ta culture personnelle pourquoi pas. Mais si tu le fais pour la productivité alors je conseille de rester pragmatique.

Posté : 27 mai 2007, 09:44
par jed
C'est en effet plus pour une histoire d'auto-formation, avant de passer sur du java j'aimerais m'assurer d'avoir touché a un peu tout en php ;)

Posté : 27 mai 2007, 10:41
par Klomac
Dans ce cas mieux vaut t'entrainer à faire de la POO sur des systèmes qui n'existent pas encore nativement ;)