Couche d'abstraction de la base de données et gestion orienté objet des accès aux tables

Soyez le premier à donner votre avis sur cette source.

Vue 9 876 fois - Téléchargée 814 fois

Description

Il s'agit d'un mini-noyau complet pour gérer les accès base de données entièrement en langage objet. La puissance de ce noyau est que lorsque vous souhaitez obtenir l'accès objet à une table, il suffit de créer une classe qui dérive de MyObject pour créer le type de votre table, et une classe qui dérive de MyObjectManager pour créer un gestionnaire d'objets.
Ce noyau est utilisé dans le projet open-source FreeGlobes et est inspiré du noyau d'abstraction de Xoops, ainsi que de certaines routines de la plate-forme de blogs DotClear.
Avec ce mini-noyau vous pouvez :
- Vous pouvez gérer toutes vos tables très simplement avec des méthodes comme getObjects(), deleteAll() ... Toutes les requetes sont gérées par des objets Criteria, inspiré de Xoops
- Proposer un script capable de supporter plusieurs SGBD en écrivant simplement un nouveau driver (le driver MySQL est déjà fait :))
- Logger le nombre de requetes BDD faites
- Instancier vos gestionnaires d'objets par inversion de controle
- Gérer tout vos accès base de données en abstrait : plus aucune requete sql dans votre code métier !

Le code est entièrement commenté pour faciliter sa compréhension. Le code est en PHP4.

Conclusion :


Pour le support sur ces codes sources, je vous invite à venir poster sur le forum de Freeglobes (http://forum.freeglobes.net).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Hello,

j'ai pas tout maté, mais c'est un joli package, de ce que j'en avais vu.
C'eut été plus joli en PHP5, mais bon...faut bien du PHP4 :-)
Pas grand chose à en dire là, je n'ai pas assez approfondi.
vanadium1
Messages postés
5
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
18 décembre 2006
-
Merci pour ton commentaire :)
C'est vrai qu'en php5, ça aurait été encore mieux mais j'ai encore du chemin avant d'atteindre ton niveau je pense. ;-)
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Re,

c'est gentil ça ;-)
Bon, j'ai maté un peu plus...mais pas encore testé, ni téléchargé à dire vrai donc je vais te faire quelques commentaires de plus, mais loin d'être exhaustif.
Je maintiens que ce serait vraiment chouette en PHP5 ;-) Avec des classes abstraites, de vraies constantes de classes, des ùéthodes abstraites (paskeu les méthodes qui retournent false parce qu'elles sont destinées à être surchargées...ça fait pauvre ;-) ). Et des exceptions! Et un bel itérateur pour ta classe recordset...!
- 1er conseil : ajoute une doc! Et un ou plusieurs exemples d'utilisation. Parce que bon...déjà pour un bon codeur, faut un temps d'adaptation à mon avis pour utiliser ta classe...mais pour un moins bon codeur, même pas la peine d'y penser!
- ensuite : tu devrais laisser le choix, pour le log des requêtes. C'est bien d'avoir un logger. C'est mieux d'avoir le choix quant à son utilisation. Parce que moi je veux bien logger des update ou des insert, des truncate, des create table etc...mais des select, bof...je m'en fous un peu.
- mydatabase::quoteString () : attention... : c'est valable pour pas mal de base de données, dont mysql, et pas mal d'autres...mais pas pour certaines : au hasard, mssql. Ce qui fait que cette méthode ne devrait pas être définie ici. D'ailleurs, t'as un mysql::escape(), donc si ça se trouve un truc m'échappe là...mais bref, si tu fous un addslash sur une chaîne destinée à être insérée dans une base mssql, ben...ça va pas beaucoup t'aider pour les apostrophes.
- dans mysql, ou du moins la classe fille directement liée à la bdd utilisée, j'aurais vien vu des vérifications plus poussées sur les ressources. Via gettype (), et get_resource_type (), tu devrais bien t'en sortir en faisant bien gaffe...mssql_* encore, en php 5.0x, renvoie des entiers et non des ressources. Alors qu'avec php5.1+, t'as tes ressources).

Bon enfin...j'arrête là pour ce soir. C'est quand même très joli.
vanadium1
Messages postés
5
Date d'inscription
vendredi 20 mai 2005
Statut
Membre
Dernière intervention
18 décembre 2006
-
je vais tacher de mettre des exemples d'utilisation.
Pour mydatabase::quotestring() et escape() c'est vrai qu'il y a redondance, je ne l'avais pas vu. Le logger est flexible, là il est très simple. Je peux eventuellement proposer ou non de l'activer.
Merci pour tes conseils. :)
cs_wizad
Messages postés
356
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
Zut Malalam à été plus rapide que moi... :)

Donc en php5 ce serait (déja dit mais je le redit quand même... gniark).

Sinon ça à l'air d'être du costaud et d'être vachement intérréssant. Cependant une chose ma surpise : le nombre de fichier. mais bon ce n'est pas une critique dans le sens ou il est vrai que le système d'accés à un SGBD est généralement le plus lourd dans un site donc autant faire quelque chose de bien.

Sinon je regarderais le code et testerai plus tard (suis pas sur mon pc).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.