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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.