[myframework] - class sql

Soyez le premier à donner votre avis sur cette source.

Vue 5 699 fois - Téléchargée 255 fois

Description

CakePHP, Symphony, tans de framework déjà éxsitant sur le web donne envie de les utiliser directement pour créer des sites internet.
Mais comment sont créé ces frameworks? Tel est la question que je me suis pausé il y a quelque temps.

Je pense qu'une des solutions de cette étude est de créer un pseudo-framework personnel qui pourrai alors mieux me faire comprendre leur fonctionnement.

La première étape de cette création est de créer un module pour la base de donnée. Le but : simplifier l'accès à la base sql tout en récupérant le plus facilement aux données.

Voila donc le module que j'ai créé, il se compose de trois classes :
  • Object : Une classe qui permette d'étendre les fonctions des autres classes
  • SqlObject : la classe pour créer une connection a la base de donnée
  • QueryObject : la classe pour gérer les requêtes SQL


Un exemple d'utilisation est donnée dans la source.

Nota : les fonctions forum_encode() et forum_decode() n'ont pas été implémenté, mais il exsiste assez d'exemple sur ce site pour les créer.

Source / Exemple :


$sqlquery = New SqlObject("localhost","root","");
$sqlquery->setdb("rezid-inscription");
$query = $sqlquery->query(SQL_WHERE,"rezid_user",array("id"=>123),array("nom"=>"MOI") ,array(SQL_AND => 1) )  ;
echo $query->name()."<br/>" ;
print_r($query->result) ;
echo "<br/>".$query->query;
echo "<br/>".$query->sql_error;

Conclusion :


Il reste encore quelque point a peaufiné, surtout l'accès au variable interne des classes.

Nota : Le code sources est assez bien documenté, il devrai suffire a comprendre le fonctionnement du module.

Nota 2 : une connaissance poussé du fonctionnement des classes est souhaitable pour comprendre ce code.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
21 oct. 2007 à 18:34
En l'état, tu as développé une classe qui facilite l'accès à mysql. C'est tout. Ca n'a rien à voir le principe de fonctionnement d'un framework. Et ce n'est pas non plus une classe d'abstraction, puisque ta classe n'est pas indépendante de la base de données. On ne peut pas se connecter à une base SQLite ou SQL Server par exemple.

Enfin, tu dis que la 1ère étape de cette création est de créer un module pour la base de données... n'oubli pas que l'on peut avant tout utiliser un framework sans aucune base de données. Juste utiliser sa "méthode de travail", qui est le MVC généralement, ou l'approche "composant" (voir Prado par exemple).
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 oct. 2007 à 19:19
Hello,

oui, j'appuie ce que vient de dire Stailer (et je ne le répête donc pas).
Il y a des trucs que je ne pige pas, dans ton code :
- déjà, ta fonction file_put_contents_plus(). Si le but est d'écrire dans un fichier en utilisant la méthode d'ouverture en ajout, sache que file_put_contents() le fait aussi.
- je ne vois pas l'intérêt de ta classe Object. Si c'est juste pour avoir une classe capable de logger, exterieure à n'importe quelle autre classe, ok...mais elle est très incomplète. Elle devrait permettre des input et des outpout différents. Et donc, se servir d'abstractions au-dessus d'elle encore. ET ne pas s'appeler "Object" ;-)
- je n'ai jamais été fan des méthodes émulant une clause where, ou autre. Je préfère monter mes requêtes comme bon me semble. C'est souvent plus compliqué à utiliser...et puis, une requête complexe que l'on construit, on peut ainsi la tester dans un outil dédié à notre base de données, puis la copier coller dans le code, au moins. Là, c'est plus compliqué...
- tu aurais mieux fait de passer par des préparations de requêtes, et de travailler sur la façon dont les résultats sont retournés, ce qui me semble plus intéressant. Il n'y a qu'à voir ce que propose PDO : pas d'émulation de like, ou de where...mais plusieurs façons de récupérer un résultat, et plusieurs façons de préparer des requêtes.
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
21 oct. 2007 à 23:29
Bon alors,
les classes données ici ne sont pas la totalité du framework, mais il me paraissait important de commencer par là.
Ensuite, pour le moment je n'ai pas appris a utiliser que MySql d'ou le faite que cette classe n'utilise que ca.

Pour la classe Object elle est encore incomplète, comme je te l'ai dit, c'est une ébauche.

Pour finir le framework que je bosse utilisera le principe MVC que je commence a bien comprendre.
Il faudra donc attendre les autres sources pour commencer a voir le framework. Ces classes n'étaient qu'un prélude.
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
22 oct. 2007 à 01:25
bon pourquoi pas, mais je voudrais insister sur le fait qu'il est important que ton framework propose une abstraction à une base quelconque et non le figer à Mysql.

Ce que tu pourrais faire pour améliorer un peu tout ça, c'est de modifier ta classe en utilisant le driver générique PDO de Php5 . Ceci permettra au développeur de choisir un pilote (mysql, sql server etc...). Ca va te demander de revoir pas mal de choses et un peu de boulot, mais ça vaut le coup.
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
22 oct. 2007 à 07:10
Ok, merci pour le conseil, je vais faire quelque recherche la dessus.

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.