[Outil] Zenerator, générateur de code pour les applications ZF
Salut,
Je voulais vous présenter un "outil" que j'ai fait pour m'amuser en premier temps, puis pour accélérer dans une moindre mesure mes développements avec le Zend Framework.
Cet outil, nommé donc Zenerator, développé en PHP5 à l'aide du Zend Framework, permet de générer les fichiers modèles (donc les classes "ORM" qui étendent Zend_Table_Abstract), les contrôleurs d'action et les formulaires, à partir d'une base de données.
Ainsi, vous "modélisez" vos principales tables dans votre base de données, à l'aide d'un outil comme phpMyAdmin par exemple, vous déployez Zenerator sur le serveur hébergeant la base de données, et vous utilisez l'application comme n'importe quelle application web, afin de vous connectez puis générer les fichiers.
Il est clair que vous devrez faire des modifications sur les fichiers générés, ils ne correspondront jamais à une version 100% utilisable. De plus, Zenerator ne génère pas une application complète et fonctionnelle.
Sachant que chaque développeur à ses habitudes, j'ai laissé la possibilité de créer ses propres fichiers "templates". Par conséquent, vous pourrez modifier la structure du code source produit.
Exemple de classe modèle produite, à partir de la table SQL suivante :
Code:
1 2 3 4 5 6 7
| CREATE TABLE IF NOT EXISTS `membre` (
`id` int(4) NOT NULL auto_increment,
`nom` varchar(32) collate utf8_bin NOT NULL,
`password` varchar(32) collate utf8_bin NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `nom` (`nom`)
) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| <?php
/**
* Ce fichier contient la classe Membre.
*
* @copyright 2008 Gabriel Malkas
* @license "New" BSD License
*/
/**
* @see Zend_Db_Table_Abstract
*/
require_once 'Zend/Db/Table/Abstract.php';
/**
* Classe ORM qui représente la table 'membre'.
*
* @copyright 2008 Gabriel Malkas
* @license "New" BSD License
*/
class Membre extends Zend_Db_Table_Abstract
{
/*
* Nom de la table.
*/
protected $_name = 'membre';
/*
* Clé primaire de la table.
*/
protected $_primary = 'id';
/**
* Recherche une entrée Membre avec la clé primaire spécifiée
* et modifie cette entrée avec les nouvelles données.
*
* @param integer $id
* @param array $data
*
* @return void
*/
public static function edit($id, $data)
{
$db = Zend_Registry::get('dbAdapter');
$db->update('membre', $data, 'membre.id = ' . $id);
}
/**
* Recherche une entrée Membre avec la clé primaire spécifiée
* et supprime cette entrée.
*
* @param integer $id
*
* @return void
*/
public static function remove($id)
{
$db = Zend_Registry::get('dbAdapter');
$db->delete('membre', 'membre.id = ' . $id);
}
/**
* Récupère toutes les entrées Membre avec certains critères
* de tri, intervalles
*/
public static function get($order=null, $limit=0, $from=0)
{
$db = Zend_Registry::get('dbAdapter');
$query = $db->select()
->from( array("%ftable%" => "membre") );
if($order != null)
{
$query->order($order);
}
if($limit != 0)
{
$query->limit($limit, $from);
}
return $db->fetchAll($query);
}
/*
* Recherche une entrée Membre avec la valeur spécifiée
* et retourne cette entrée.
*
* @param int $id
*/
public static function findById($id)
{
$db = Zend_Registry::get('dbAdapter');
$query = $db->select()
->from( array("m" => "membre") )
->where( "m.id = " . $id );
return $db->fetchRow($query);
}
/*
* Recherche une entrée Membre avec la valeur spécifiée
* et retourne cette entrée.
*
* @param varchar $nom
*/
public static function findByNom($nom)
{
$db = Zend_Registry::get('dbAdapter');
$query = $db->select()
->from( array("m" => "membre") )
->where( "m.nom = " . $nom );
return $db->fetchRow($query);
}
/*
* Recherche une entrée Membre avec la valeur spécifiée
* et retourne cette entrée.
*
* @param varchar $password
*/
public static function findByPassword($password)
{
$db = Zend_Registry::get('dbAdapter');
$query = $db->select()
->from( array("m" => "membre") )
->where( "m.password = " . $password );
return $db->fetchRow($query);
}
} |
Capture d'écran de la page d'accueil
Afin d'avoir plus d'informations, et pour télécharger l'application, rendez-vous sur la page dédiée à cet effet : http://janitrix.developpez.com/zenerator
J'espère que cette application pourra vous être utile ;)
Si vous avez des idées et/ou remarques, n'hésitez pas.
Merci à vous.