Nouveau module : de l'ORM dans CmsMadeSimple

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
UPDATE : 11 décembre : lien

Bon allez je me lance.

Vous trouverez le sujet en anglais (aprox.) sur linkedin, je duplique ici puisque toutes les ressources sont bonnes à prendre. Je précise que je suis évidement l'auteur du projet/message.


[h]Seriez vous intéressé par un framework ORM dans vos modules ?[/h]

Durant les deux dernières années j'ai travaillé sur une solution type ORM dans mes propres modules qui serait capable d’éliminer toutes les requêtes SQL de mon code.

Qu'est-ce qu'un framework ORM ? Wikipedia dit : Object-relational mapping (ORM, O/RM, et O/R mapping) dans le langage de programmation est une technique de programmation pour convertir des données entre différents type de système incompatible dans une approche orientée objet propre aux langages programmation. Cela créé dans les faits une "base de donnée objet virtuelle" qui peut être utilisée depuis l'intérieur du programme

http://en.wikipedia.org/wiki/Object-relational_mapping

Vous connaissez peut être Hibernate pour Java, Doctrine pour PHP (au sein de Symphony). Adodb n'étant pas un réel ORM.

J'ai fait une présentation de mes premiers travaux sur ce projet durant le dernier geekmoot (2012) et depuis ce jour j'ai totalement ré-écrit le framework pour le rendre plus sexy que jamais.

Mais maintenant je suis bloqué dans une situation ou mon module est quasi-prêt à l'usage en production mais je n'ai aucun projet l'utilisant. Aucun projet donc aucun travail supplémentaire sur mon framework. Aucun travail => je n'ose pas le proposer sur la forge.

Devrais-je passer plus de temps sur sur super projet ? je le ferrais si des personnes étaient intéressées à l'inclure dans leur modules.

Donc ... il y a t il des personnes intéressées par ce genre de nouvelles fonctionnalités dans vos propres modules ?


* Il ne casse absolument pas votre code existant
* Il est très léger et vraiment intuitif

Code :
[== Indéfini ==]
//Instancier l'objet
$css = new Css();

//Renseigner ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
$css->set('css_text',file_get_contents('stylesheet.css'));
$css->set('media_type','');
$css->set('create_date',date());
$css->set('modified_date',date());

//Sauvegarder l'objet en base
$css->save();


* Mais attendez il y a encore mieux ! :
Code :
// trouver tous les objets CSS dans notre table
array $cssList = $css->findAll();

Code :
//Instancier l'objet
$css = new Css();
//Renseigner certaines de ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
// supprimer son équivalent en base
$css->delete();

Code :
[== Indéfini ==]
//Rechercher par critère
//Instancier l'objet
$css = new Css();
//Renseigner certaines de ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
// rechercher ses semblables
$css->findByExample($css);

* Même pour les installations / désinstallation de vos modules :

Code :
[== Indéfini ==]
//Créer toutes les tables du module d'un coup
$entities = MyAutoload::getAllInstances($this->GetName());
foreach($entities as $anEntity) {
  Core::createTable($anEntity);
}

* Il peut automatiquement gérer les clés primaires, les clés étrangères, les clés d'association (relation dite many to many)
* Il peut vérifier les tailles, le formatage des données, la présence des données dites obligatoire, interdire la suppression d'une données si un objet l'utilise encore ailleurs en base ou au contraire interdire l'ajout d'un objet si certaines de ses dépendances n'existe pas encore.
* Il utilise Adodb pour la communication avec la base de donnée et est codé sous la forme d'un parfait module cmsms. Zéro modification de fichier ou autres merdes sont nécessaires pour le faire fonctionner.
* ...

Toutes les descriptions des entités sont présentées dans un simple fichier PHP comme celui ci : https://github.com/besstiolle/orm-ms/tre...eleton/lib

Comme vous pouvez l'imaginer c'est énormément de travail que j'ai investi dans ce projet et ce serait une honte pour moi de l'abandonner en l'état. Donc Il y a t il des volontaires intéressés pour l'utiliser en environnement réel au sein de vos propres modules.

Merci pour avoir lu cet énorme post et pour l'intérêt que vous pourrez porter à ce projet Wink

le Github du projet : https://github.com/besstiolle/orm-ms
Répondre
#1
UPDATE : 11 décembre : lien

Bon allez je me lance.

Vous trouverez le sujet en anglais (aprox.) sur linkedin, je duplique ici puisque toutes les ressources sont bonnes à prendre. Je précise que je suis évidement l'auteur du projet/message.


[h]Seriez vous intéressé par un framework ORM dans vos modules ?[/h]

Durant les deux dernières années j'ai travaillé sur une solution type ORM dans mes propres modules qui serait capable d’éliminer toutes les requêtes SQL de mon code.

Qu'est-ce qu'un framework ORM ? Wikipedia dit : Object-relational mapping (ORM, O/RM, et O/R mapping) dans le langage de programmation est une technique de programmation pour convertir des données entre différents type de système incompatible dans une approche orientée objet propre aux langages programmation. Cela créé dans les faits une "base de donnée objet virtuelle" qui peut être utilisée depuis l'intérieur du programme

http://en.wikipedia.org/wiki/Object-relational_mapping

Vous connaissez peut être Hibernate pour Java, Doctrine pour PHP (au sein de Symphony). Adodb n'étant pas un réel ORM.

J'ai fait une présentation de mes premiers travaux sur ce projet durant le dernier geekmoot (2012) et depuis ce jour j'ai totalement ré-écrit le framework pour le rendre plus sexy que jamais.

Mais maintenant je suis bloqué dans une situation ou mon module est quasi-prêt à l'usage en production mais je n'ai aucun projet l'utilisant. Aucun projet donc aucun travail supplémentaire sur mon framework. Aucun travail => je n'ose pas le proposer sur la forge.

Devrais-je passer plus de temps sur sur super projet ? je le ferrais si des personnes étaient intéressées à l'inclure dans leur modules.

Donc ... il y a t il des personnes intéressées par ce genre de nouvelles fonctionnalités dans vos propres modules ?


* Il ne casse absolument pas votre code existant
* Il est très léger et vraiment intuitif

Code :
[== Indéfini ==]
//Instancier l'objet
$css = new Css();

//Renseigner ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
$css->set('css_text',file_get_contents('stylesheet.css'));
$css->set('media_type','');
$css->set('create_date',date());
$css->set('modified_date',date());

//Sauvegarder l'objet en base
$css->save();


* Mais attendez il y a encore mieux ! :
Code :
// trouver tous les objets CSS dans notre table
array $cssList = $css->findAll();

Code :
//Instancier l'objet
$css = new Css();
//Renseigner certaines de ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
// supprimer son équivalent en base
$css->delete();

Code :
[== Indéfini ==]
//Rechercher par critère
//Instancier l'objet
$css = new Css();
//Renseigner certaines de ses valeurs
$css->set('css_name','Module: Quotes Made Simple');
// rechercher ses semblables
$css->findByExample($css);

* Même pour les installations / désinstallation de vos modules :

Code :
[== Indéfini ==]
//Créer toutes les tables du module d'un coup
$entities = MyAutoload::getAllInstances($this->GetName());
foreach($entities as $anEntity) {
  Core::createTable($anEntity);
}

* Il peut automatiquement gérer les clés primaires, les clés étrangères, les clés d'association (relation dite many to many)
* Il peut vérifier les tailles, le formatage des données, la présence des données dites obligatoire, interdire la suppression d'une données si un objet l'utilise encore ailleurs en base ou au contraire interdire l'ajout d'un objet si certaines de ses dépendances n'existe pas encore.
* Il utilise Adodb pour la communication avec la base de donnée et est codé sous la forme d'un parfait module cmsms. Zéro modification de fichier ou autres merdes sont nécessaires pour le faire fonctionner.
* ...

Toutes les descriptions des entités sont présentées dans un simple fichier PHP comme celui ci : https://github.com/besstiolle/orm-ms/tre...eleton/lib

Comme vous pouvez l'imaginer c'est énormément de travail que j'ai investi dans ce projet et ce serait une honte pour moi de l'abandonner en l'état. Donc Il y a t il des volontaires intéressés pour l'utiliser en environnement réel au sein de vos propres modules.

Merci pour avoir lu cet énorme post et pour l'intérêt que vous pourrez porter à ce projet Wink

le Github du projet : https://github.com/besstiolle/orm-ms
Répondre


Messages dans ce sujet

Atteindre :


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