begin process at 2008 07 20 02:45:29
1 213 102 membres
25 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[MYFRAMEWORK] - CLASS SQL


Information sur la source



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

  • $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;
$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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de stailer le 21/10/2007 18:34:05

    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).

  • signaler à un administrateur
    Commentaire de malalam le 21/10/2007 19:19:36 administrateur CS

    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.

  • signaler à un administrateur
    Commentaire de nico1610 le 21/10/2007 23:29:23

    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.

  • signaler à un administrateur
    Commentaire de stailer le 22/10/2007 01:25:53

    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.

  • signaler à un administrateur
    Commentaire de nico1610 le 22/10/2007 07:10:19

    Ok, merci pour le conseil, je vais faire quelque recherche la dessus.

  • signaler à un administrateur
    Commentaire de Yoteco le 22/10/2007 09:51:47

    Autre conseil, prend un framework existant comme Zend Framework par exemple. Ce sera de toute façon plus complet qu'un framework maison... Et tu est entrain de réinventer la roue.

  • signaler à un administrateur
    Commentaire de nico1610 le 22/10/2007 10:49:45

    Comme dit plus haut, je veut "réinventer la roue" à titre purement éducatif & instructif, puis je dépose mes sources ici histoire d'en faire profiter les autres et surtout d'avoir leur conseil sur la façon dont j'ai fait la chose.

    Mon but n'ai pas de réaliser un framework concurrentiel à Zend, CakePhp ou symphony, loin de moi cette idée !

  • signaler à un administrateur
    Commentaire de Tortuegeniale le 22/10/2007 10:50:48

    Pourquoi prendre un framework existant ? Ou est le plaisir ? Dans une boite encore, t'as pas le temps de tout refaire, mais si c'est perso ... En plus il a dit qu'il commence à bien comprendre MVC, donc faire soit même c'est le meilleur moyen d'apprendre et de consolider les aquis. Si personne ne réinventait la roue, tout le monde tournerai avec le même code, ce que je trouverai extrement chiant lol

  • signaler à un administrateur
    Commentaire de marc1306 le 23/12/2007 17:48:40

    Bonjour , je trouve cette idée êtres interessante pourquoi :
    ayant également testé ZF, ou symfonie au bout d'un moment faut etre réaliste je n'utilise meme pas 1/1000 ieme du framework

    je ne voulais pas non plus utiliser le system mvc qui est sensé simplifier le travail mais perso ( ce n'est que mon avis ) je trouve ça encore plus lourd !

    là l'idée de faire des classes bien complète en s'inspirtant de ce qui est deja fait me plait

    les cms , ou framworks sont trufé d'include qui include d'autres avec des variables de partout ...

    suffirai de voir toutes les pages et calculs necessaire pour faire simplement une QUERY ,les frameworks sont qq même des usines .

    là si qqn pouvais faire une belle classe pour mysql avec pdo , gestions des erreurs etc
    je trouve ça au contraire excellent et prenneur

    un site simple , propre efficace et rapide
    que demander de plus ?

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS