Les avertissements suivants se sont produits :
Warning [2] Undefined array key 0 - Line: 1640 - File: showthread.php PHP 8.2.18 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php 1640 errorHandler->error_callback
/showthread.php 915 buildtree




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Nouveau module : de l'ORM dans CmsMadeSimple
#9
salut Phillipe, salut tout le monde

Alors dans l'ordre, je confirme les dires de Heriquet. Mon framework doit être considéré comme un moyen de réduire les appels au code SQL tels qu'on le fait (trop) souvent dans nos modules.

Tu devras toujours écrire un descriptif de ton modèle dans un fichier php (tu as des simples exemples de description ici) afin que mon module sache quoi faire et comment discuter avec la base de donnée. Ce n'est donc ni un "phpmyadmin-like" ni un moyen détourner d'aller piocher des données dans des tables qui n'appartiennent pas à ton module. Bien évidement, vu qu'il sait comment discuter avec ta base de donnée, il est capable de créer les tables de ton module et les détruire sitôt si tes fichiers de descriptions sont corrects (premier gain de temps)

Comme l'as dit Heriquet c'est donc une interface, mon framework réduisant à peau de chagrin ce genre de code que je trouve affreux :

Code :
[== Indéfini ==]
$db_prefix = cms_db_prefix();
$dict = NewDataDictionary($db);
$flds= "
    id I,
    textid C(32),
        description C(255)
    ";

$taboptarray = array('mysql' => 'TYPE=MyISAM');
$sqlarray = $dict->CreateTableSQL(cms_db_prefix().'module_quotegroups', $flds, $taboptarray);
$dict->ExecuteSQLArray($sqlarray);
$db->CreateSequence( cms_db_prefix()."module_quotegroups_seq" );

ou encore les innombrables appel aux $sql = "INSERT INTO ...... (xx,yy,zz) values (?,?,?)". Avec ce framework on pense "Objet", un objet se créé, se manipule et se recherche même que ce soit via son ID soit via une recherche par critère : "les villes de plus de X habitants dont le nom contient les lettres "xx" mais pas "yy" devient aussi simple que
quelques lignes de code qui sont très compréhensibles

Le framework est déjà opérationnel depuis Janvier 2013 pour de nombreuses opérations CRUD basique : select, select by ID, delete, insert, update. Il est également capable de travailler avec des relations fortes entre les entités : un client possède une ou des adresses. Tu ne peux supprimer un client si tu n'a pas supprimé toutes les adresses avant par exemple. Il gère également les cardinalités "many to many" dans les modèles ce qui te permet de récupérer par exemple "tous les livres dont l'un des auteurs est xx"

Mon travail la semaine prochaine (pas là ce we) sera d'implémenter d'autres fonctionnalités : recherche par criteria, mise en cache des recherches pour augmenter la vélocité de réponse, ...

Concernant GitHub : jamais tu ne seras capable de casser mon code car c'est impossible. Tu as forké mon code, c'est donc maintenant le tien. Si tu modifie, tu casse le tiens dans la pire des situations Big Grin Pas de panique, Git te permet de revenir en arrière. Mieux encore, si tu trouve un bug, une amélioration dans le code ou dans la documentation, tu peux me proposer facilement la correction, on appel cela faire une "Push Request" que je validerais ou pas. Si je valide, ton "patch" intègre aussitôt mon code de manière officiel, c'est la magie de Git : tout est publique, rien n'est cassable.

Un coup de main ? avec plaisir, tu sais maintenant comment faire : fork, modifie, commit, push, push Request Smile

J'espère stabiliser une première version dédiée au CRUD dès lundi ou mardi soir avec de la documentation associée sous la forme d'un classique module cmsms. A partir de là chacun pourra me remonter ses questions, ses idées et surtout ses impressions sur la facilité de prise en main du framework. J'attends beaucoup de chose de ce côté car c'est réellement facile à utiliser, un peu moins à comprendre le fonctionnement d'un ORM pour ceux qui n'ont jamais joué avec Hibernate, doctrine et autre Smile
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)