118Fermer120
MeowcateLe 31/05/2014 à 23:28
flanker (./116) :
Si j'ai bien compris l'idée, on décrit sa table SQL dans un fichier (.xml, .yml ou équivalent), et ça génère du code pour l'utiliser.

Je t'explique cela rapidement, du moins pour CakePHP :
La base de données est conçues selon des conventions précises (non obligatoires, mais préférable pour automatiser certains comportements du framework, et surtout que le scaffolding fonctionne on the fly). Par exemple les ids sont tous "id", les noms de tables sont en anglais au pluriel de ce qu'elles décrivent (ex : cars, people...), les clés étrangères sont de forme la table visée au singulier avec le suffixe id (car_id, person_id...).
Bref.
Ceci fait, il est possible de générer automatiquement de nombreux éléments : tout d'abord les models où le script de génération prévoit ce qui est attendu mais demande toujours confirmation ("vu les clés étrangères, je suppose que « people has one cars » et que « cars belongs to people »). Puis les controllers avec une base de CRUD (on peut même y ajouter un CRUD spécifique pour le back admin), et enfin les vues correspondantes. On peut même aller jusqu'à automatiser la création de tests unitaires.

Maintenant, pour ce que tu trouves moche, il s'agit de génération d'une base de code pour déployer rapidement des idées, et surtout ce qu'on écrit en permanence (créer les models, controllers, les lier entre eux...). Pour tout le reste, c'est à toi de bosser, il n'est pas question de régénérer le code de nouveau par la suite. Tu changes des éléments dans la base ? tu vas modifier manuellement tes models. Cela simplifie la création de ce que tu aurais de toute façon dû créer, tu peux donc tout à fait t'en passer, mais je peux déjà dire que si l'économie en temps est variable (1 à 3h en moyenne sur mes projets), le vrai plaisir st de ne pas avoir à refaire toujours les mêmes trucs au lancement de chaque projet.

Par ailleurs, le code généré est suffisant pour permettre d'avoir une application fonctionnelle si elle se limite à des CRUD simples, en particulier pour du prototypage.