Répertoire de codes source
Générateur de classes ORM [MAJ le 26/01/2010] | |
---|---|
déposé par Echo le 14/04/2008 nombre de visites : 7819 edité le 26/01/2010 par Echo |
Description Au sein du Framework Zend, vous avez besoin de définir une classe dans le répertoire 'models' qui étend Zend_Db_table_Abstract pour chaque table de votre base de données que vous voulez accéder. Pour chacune de ces classes, vous avez besoin de déclarer des variables protected comme le nom de la table dans $_name, les clé(s) primaire(s) dans $_primary, les tables dépendantes dans $_dependentTables, les tables liées dans $_referenceMap, etc. Au final, vous passez un temps fou à créer les mêmes choses et, à chaque modification de votre base de données, vous devez encore éditer vos modèles! Contraintes et règles de nommage N'ayant pas la possibilité de savoir par programmation avec un describeTable si le champs est une foreign key, JE VOUS DECONSEILLE ABSOLUMENT DE RENOMMER VOS FOREIGN KEY. Par ailleurs, JE VOUS ENCOURAGE FORTEMENT A RESPECTER UNE REGLE DE NOMMAGE telle que celle décrite ci-dessous. Ces règles me semblent élémentaires dans le développement de bases de données car de cette manière la lecture devient plus aisée (on identifie d'un seul coup d'oeil les foreign key et leur table de provenance) et chaque champs est unique :
Restrictions Je l'ai entièrement recodé entre 2 trajets de métro... A l'arrache quoi! Ca fonctionne sur mes BDD, ça corrige pas mal de merdes qui existaient par contre ça ne marche toujours que pour MySQL. Je promets de faire la portabilité pour Oracle et Postgres! Concernant le code d'exemple ci-dessous L'instantiation peut se faire de 3 manières :
La génération des classes se fait automatiquement à l'appel de l'URL http://yourhost/webapp_dir/admin/database [Edit] Ce code source a été proposé à contribution au Zend Framework. Le code source et son évolution sont désormais consultables à l'adresse suivante : http://framework.zend.com/wiki/display/ZFPROP/Zend_Generator_Orm+-+Thomas+VEQUAUD Vous pouvez récupérer le code source sur mon site Web à l'adresse suivante : http://thomas.vequaud.free.fr/download/Zend_Generator_Orm.zip Il suffit d'extraire les fichiers du zip directement dans le répertoire de librairie Zend et d'appeler Zend_Orm comme n'importe quel composant Zend (cf. code d'exemple ci-dessous). [/Edit] |
<?php require_once('controllers/CommonController.php'); /** * AdminController * * Permet de gérer ... : * index => ... * * @author Thomas VEQUAUD <thomas.vequaud@gmail.com> * @uses Zend_Controller_Action */ class AdminController extends Zend_Controller_Action { /** * indexAction * * @return void */ public function indexAction() { return; } /** * databaseAction * Database administration * * @return void */ public function databaseAction() { // ORM $orm = new Zend_Orm(); $orm->create(); $orm->update(); $this->view->files = $orm->getFiles(); $this->view->errors = $orm->getErrors(); unset($orm); return; } } |
|