Dboc 1.6 [php5]

Description

Version 3.0 Up. La version 1.6 est obsolète.
http://www.phpcs.com/codes/DBOC-V3-AJAX-PHP5_51656.aspx

Mercredi 4 juin 2008

Passage à la version 2.0 du DBOC en Ajax ici :
http://www.phpcs.com/codes/DBOC-AJAX-PHP5_46882.aspx

//-----------------------------------------------------------------
Vendredi 8 février 2008

Ajout d'un setter dans le DBM : setSql($sql);
Ajout d'une nouvelle fonction : toxml();
retourne l'instance en cours au format xml

Ajout d'un exemple de DBM version Singleton SingletonDBM (Non utilisé) avec sa page de test test_dbm_singleton.php
//-----------------------------------------------------------------
Bonjour,
mardi 22 août 2007 : Mise à jour

Suite à un souci de copie de certains fichier à cause de la création non récursive des répertoire avec mkdir on pouvais
avoir une liste d'erreurs importante du à des essai de copie de fichier dans le dossier de test.
Si ce dossier n'existe pas il devait être automatiquement créé avec un sous dossier class : ./test/class.
J'ai donc rajouté une page suplémentaire : init qui créé les dossiers correctements et copie automatiquement les fichiers necessaires au bon endroit.
Pour ceux qui on eu les erreurs avant cette mise à jour crééz un dossier "test" contenant un sous dossier "class" à la racine et les classes générées se copirons correctement.

---------------------------------------------------------------------------------------------------
mardi 21 août 2007 : Mise à jour importante du DBOC
#Bug corrigé par le membre fs074995 (Merci ! :) )
Un preg_match à été rajouté dans la classe DBM pour n'affecter le nombre de lignes d'une requete qu'en cas de
SELECT ou de SHOW car sinon sa posais problème.

-> Désormais les 3 classes 'myException.php,DBM.php et iDataBaseClass.php seront automatiquement copiée dans votre dossier contenant les classes (CLASS_PATH défini avant le test ou par défaut le dossier test).
-> Légère amélioration de la présentation graphique, bon ce n'est pas une oeuvre d'art sa c'est sur car ce n'est pas le
but mais bon c'est quand même un peu plus agréable qu'avant :p

#Nouvelle fonction

-> Ajout d'une nouvelle fonction statique : find(champ_table,operateur,valeur,tri_par,ordre_tri)
Cette fonction est une idée du membre fs074995 (que je remercie pour cette exelente idée) qui m'a envoyé son code que j'ai modifié à ma sauce, cette fonction permet d'exécuter une requète de comparaison, sa se traduirai par : trouve moi les enregistrements de ma table tels que le champ est égal ou contient, commence, fini par la valeur trié sur le champ x ascendant ou descendant.

#Nouvelles options

-> Une nouvelle option vous permet de modifier automatiquement la classe DBM, cela va écrire (normalement correctement)
le nom de la base à laquelle vous vous êtes connecté dans la variable de connexion $DB_NAME (cela vous évitera d'avoir a le faire manuellement)
-> Ecriture de la fonction __call() qui permet de surcharger des fonction mais apparement seulement dans un contexte d'instance, j'ai essayé en vain de surcharger une fonction statique sans résultat si quelqu'un peu m'expliquer comment faire je suis prenneur :) C'est facultatif mais sa peu être interessant.

#Dossier help

Ce dossier contient des screen qui vous montre le déroulement de la génération avec la base "mysql" ainsi que le résultat d'un test de fonction. Avec sa vous devriez pas avoir de difficultés à utiliser le DBOC.

Voila pour cette mise à jour, je remarcie tout ceux qui m'on félicité ou encouragé à continuer ce mini générateur ainsi
que encore une fois fs074995 qui est à l'origine de cette mise à jour ;))

---------------------------------------------------------------------------------------------------
mardi 3 juillet 2007 : Grosse mise à jour de la source rendant obsolète la version précédante :

Indentification d'un bug javascript si vous n'êtes pas sous ie7 ou ff2 : le formulaire de test ne se valide pas je vous invite donc à enlever la fonction
javscript qui teste que vous avez bien entré vos champs si vous n'êtes pas sous les 2 navigateurs ci dessus) en transformant le bouton de validation en bouton de type 'submit' et en enlevant l'appel de la fonction sur l'évènement onclick ou de mettre à jour votre navigateur préféré ^^

-> Ajout de 2 nouvelles options de génération facultatives :
1.copie automatique des classes dans un dossier permettant de les tester juste après
2.accepter ou non que les classes implémentent l'interface iDataBaseClass
-> Le constructeur et la méthode execSql() de la classe DBM sont désormait surchagées ! Vous n'avez plus à le modifier et les classes généré peuvent désormais utiliser directement et implicitement la bonne méthode en fonction du combre de paramètres lors de l'appel.
-> Correction de nombreux bug de syntaxe lors de la création des classes
-> Ajout d'une page permettant de tester directement les classes générées si au préalable vous avez copié les classes dans le dossier test/class ou que vous avez coché l'option copier les classes directement dans le dossier test (vous ne pouvez tester que les fonctions statiques mais sa permet de voir si les classe fonctionnent, pour les autres méthode il fallait créer une instance d'objet et sa compliquait un peu les choses, il aurait fallu générer un formulaire assez lourd je laisse a votre charge ce travail :p)

Voila pour cette nouvelle version, pour tout bug ou idée amélioration me contacter ;)
En cas de bug n'hesitez pas à me contacter même si je réponds pas immédiatement je réponds à tout les messages que l'on m'envoi !
---------------------------------------------------------------------------------------------------
La classe ClassWriter génère automatiquement le code de base de classes php liés à une base de donnée mysql le but étant de gagner du temps et de formaliser le code de ces dernières.
Chaque classe est l'image exacte d'une table.

Ces classes implémentent une interface (iDataBaseClass) qui défini 5 méthodes :

Les méthodes statiques :

get(clef_primaire) : vous retourne un objet représentant un enregistrement de votre table
getall() : vous retourne tout les enregistrements de la table représentée par votre objet sous la forme d'un tableau d'objet

Les méthodes non statiques

add() : inser dans la table dont la classe est image un nouvel enregistrement qui prends toutes les valeur de l'instance
update() : met à jour l'enregistrement avec les valeurs de l'instance
delete() : supprime l'enregistrement représenté par l'instance

Sont générés aussi les accesseurs sur les attributs.

Pour générer vos classes :
créez un dossier de votre choix dans le répertoire www de wamp (si vous utilisez wamp) copiez tout les fichiers de la source dans ce dernier
connectez vous à la base de votre choix grace au formulaire prévu à cet effet (attention j'ai fait mes test sur une base locale : 127.0.0.1 user : root et aucun mot de passe)
une fois connecté vous aurez un listing des tables de la base et en cliquant sur le nom de la table vous pourrez cocher / décocher les tables dont vous voulez générer les classes et spécifier les méthodes que vous voulez générer)

-->Toutes les classes générées se trouvent dans le répertoire myClass<--

Voila, en espérant vous donner un outil qui vous aidera, n'hésitez pas à l'améliorer à votre goût.

Conclusion :


Améliorations à apporter :
gestion de l'héritage à implémenter
gestion des erreurs au niveau du typage des champs de la base de donnée

Codes Sources

A voir également

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.