Page 1 sur 1

poo et insertion bdd

Posté : 20 mai 2008, 13:39
par d0m
salut,

j'aimerais quelques avis sur la modelisation que j'utilise :

disons que par exemple j'ai des films à gérer.
d'un coté j'ai la bdd mysql avec un objet base_mysql qui gère la connection, l'exécution de requêtes etc...
de l'autre des objets films avec des proprietes.

vient le moment ou j'ai besoin d'insérer les films créés dans la bdd.

jusqu'à maintenant sans poo j'utilisai des fonctions genre :
inserer_film(titre,auteur,....){
  //requete sql d'insertion
}
j'aimerais incorporer ces fonctions dans le modèle objet.

Dans ce cas il faudrait que cette fonction soit une fonction de l'objet base_mysql ou de l'objet film?
je pencherai plutôt pour l'objet base_mysql mais j'ai un doute car l'objet à force va contenir beaucoup de fonctions d'insertion...

Posté : 20 mai 2008, 14:01
par savageman
Dans film, mais dans une méthode statique. ;)

Posté : 21 mai 2008, 19:33
par d0m
merci pour ta réponse.

j'ai une question, pourquoi une méthode statique ?

Posté : 21 mai 2008, 20:25
par Cyrano
Où est ta méthode d'insertion ? Dans la classe film ? ou dans ta classe mysql ? Est-ce que ta classe film étend la classe mysql ?

Techniquement ce que je verrais, c'est que film étende mysql, que lorsque tu crées une instance de film, l'héritage créant une instance de mysql déclenche la connexion et que tu fasses appel à ta méthode d'insertion qui est dans film. Il peut y avoir des variantes, mais grosso-modo, c'est un problème d'héritage que je verrais là.

Quant à l'idée de la méthode statique, je n'en vois pas l'intérêt :-k

Posté : 21 mai 2008, 20:43
par d0m
pour l'instant j'ai mis ma méthode d'insertion dans la classe film, cette méthode prenant en argument la connexion mysql. Quelque chose de ce genre :
public function inserer_bdd($connexion){
	$connexion->query("INSERT INTO films (titre)
					  VALUES	('".$this->titre."'));
}
Par contre faire heriter la classe film de mysql me semble étrange, déjà conceptuellement un film contiendrait des attributs propres à la base de données.
Et ensuite si je fais ça pour toutes mes classes (par exemple acteurs,...) je vais me retrouver avec beaucoup de connexions crées l'une après l'autre par insertions successives...

Posté : 21 mai 2008, 20:52
par Cyrano
Dans ce cas, il faut gérer l'unicité de la connexion dans ta classe MySQL. Un singleton poserait problème avec l'héritage, mais il y a certainement moyen de contourner ce problème.