1 | <?php |
||
14 | class CreateClasse implements \BFWInterface\ICreateClasse |
||
15 | { |
||
16 | /** |
||
17 | * @var $_kernel L'instance du Kernel |
||
18 | */ |
||
19 | protected $_kernel; |
||
20 | |||
21 | /** |
||
22 | * @var $nom Le nom de la classe |
||
23 | */ |
||
24 | protected $nom = ''; |
||
25 | |||
26 | /** |
||
27 | * @var $indente Le ou les caractère(s) mit pour indenté |
||
28 | */ |
||
29 | protected $indente = ' '; |
||
30 | |||
31 | /** |
||
32 | * @var $extends Depuis quelle classe on hérite |
||
33 | */ |
||
34 | protected $extends = ''; |
||
35 | |||
36 | /** |
||
37 | * @var $implements Liste les interfaces de la classe |
||
38 | */ |
||
39 | protected $implements = array(); |
||
40 | |||
41 | /** |
||
42 | * @var $ attributs Liste tous les attributs de la futur classe |
||
43 | */ |
||
44 | protected $attributs = array(); |
||
45 | |||
46 | /** |
||
47 | * @var $attributs_porter La portée de tous les attributs (public/private/protected) |
||
48 | */ |
||
49 | protected $attributs_porter = array(); |
||
50 | |||
51 | /** |
||
52 | * @var $attributs_option Les options passé à la méthode de création d'attribut pour chaque attribut |
||
53 | */ |
||
54 | protected $attributs_option = array(); |
||
55 | |||
56 | /** |
||
57 | * @var $methode Liste toutes les méthodes qui sont à créer |
||
58 | */ |
||
59 | protected $methode = array(); |
||
60 | |||
61 | /** |
||
62 | * @var $methode_porter La portée de toutes les méthodes (public/private/protected) |
||
63 | */ |
||
64 | protected $methode_porter = array(); |
||
65 | |||
66 | /** |
||
67 | * @var $get La liste de tous les accesseur get à faire |
||
68 | */ |
||
69 | protected $get = array(); |
||
70 | |||
71 | /** |
||
72 | * @var $set La liste de tous les accesseur set à faire |
||
73 | */ |
||
74 | protected $set = array(); |
||
75 | |||
76 | /** |
||
77 | * @var $file Le contenu de la futur classe |
||
78 | */ |
||
79 | protected $file = ''; |
||
80 | |||
81 | /** |
||
82 | * @var $methode_create La liste de toutes les méthodes créé (pour éviter d'en créer en double à cause des get et set) |
||
83 | */ |
||
84 | protected $methode_create = array(); |
||
85 | |||
86 | |||
87 | /** |
||
88 | * Constructeur |
||
89 | * |
||
90 | * @param string $nom Le nom de la futur classe |
||
91 | * @param array $options Les options de la classe |
||
92 | */ |
||
93 | public function __construct($nom, $options=array()) |
||
114 | |||
115 | /** |
||
116 | * Retourne le contenu de la futur classe |
||
117 | * |
||
118 | * @return string La futur classe |
||
119 | */ |
||
120 | public function getFile() |
||
121 | { |
||
122 | 1 | return $this->file; |
|
123 | } |
||
124 | |||
125 | /** |
||
126 | * Créer un attribut à la nouvelle classe |
||
127 | * |
||
128 | * @param string $nom Le nom de l'attribut |
||
129 | * @param array $opt (default: array()) Les options de l'attribut : |
||
130 | * - string porter : La porté de l'attribut. Par défaut à "protected" |
||
131 | * - bool get : Si un get doit être créé. Par défaut à true |
||
132 | * - bool set : Si un set doit être créé. Par défaut à true |
||
133 | * - string type : Le type de l'attribut. Par défaut aucun type prédéfini. |
||
134 | * - mixed default : Valeur par défaut de l'attribut. |
||
135 | * - bool default_string : Permet d'indiqué que la valeur par défaut est de type string (met des ' autour.) |
||
136 | * |
||
137 | * @TODO : Enlever default_string et repérer dynamiquement le type de la valeur. |
||
138 | * |
||
139 | * @return bool True si réussi, False si existe déjà. |
||
140 | */ |
||
141 | public function createAttribut($nom, $opt=array()) |
||
142 | { |
||
143 | 1 | if(in_array($nom, $this->attributs)) {return false;} |
|
144 | |||
145 | 1 | if(!isset($opt['porter'])) |
|
146 | 1 | { |
|
147 | 1 | $opt['porter'] = 'protected'; |
|
148 | 1 | } |
|
149 | |||
150 | 1 | if(!isset($opt['get'])) |
|
151 | 1 | { |
|
152 | 1 | $opt['get'] = 1; |
|
153 | 1 | } |
|
154 | |||
155 | 1 | if(!isset($opt['set'])) |
|
156 | 1 | { |
|
157 | 1 | $opt['set'] = 1; |
|
158 | 1 | } |
|
159 | |||
160 | 1 | $this->attributs[] = $nom; |
|
161 | 1 | $this->attributs_porter[] = $opt['porter']; |
|
162 | 1 | $this->attributs_option[] = $opt; |
|
163 | |||
164 | 1 | if($opt['get'] == 1) |
|
165 | 1 | { |
|
166 | 1 | $this->get[] = $nom; |
|
167 | 1 | } |
|
168 | |||
169 | 1 | if($opt['set'] == 1) |
|
170 | 1 | { |
|
171 | 1 | $this->set[] = $nom; |
|
172 | 1 | } |
|
173 | |||
174 | 1 | return true; |
|
175 | } |
||
176 | |||
177 | /** |
||
178 | * Créer une nouvelle méthode pour la classe |
||
179 | * |
||
180 | * @todo Gestion des arguments pour la méthode |
||
181 | * |
||
182 | * @param string $nom Le nom de la méthode |
||
183 | * @param string $porter La porté de la méthode. Par défaut private. |
||
184 | * |
||
185 | * @return bool |
||
186 | */ |
||
187 | public function createMethode($nom, $porter='protected') |
||
188 | { |
||
189 | 1 | if(in_array($nom, $this->methode)) {return false;} |
|
190 | |||
191 | 1 | $this->methode[] = $nom; |
|
192 | 1 | $this->methode_porter[] = $porter; |
|
193 | |||
194 | 1 | return true; |
|
195 | } |
||
196 | |||
197 | /** |
||
198 | * Créer un attribut dans la futur classe. |
||
199 | * |
||
200 | * @param int $key La clé de l'attribut à créer (tableau $this->attributs) |
||
201 | */ |
||
202 | protected function genereAttribut($key) |
||
257 | |||
258 | /** |
||
259 | * Créer un accesseur get |
||
260 | * |
||
261 | * @param int $key La clé de la méthode à créer (tableau $this->get) |
||
262 | */ |
||
263 | protected function genereGet($key) |
||
275 | |||
276 | /** |
||
277 | * Créer un accesseur set |
||
278 | * |
||
279 | * @param int $key La clé de la méthode à créer (tableau $this->get) |
||
280 | */ |
||
281 | protected function genereSet($key) |
||
298 | |||
299 | /** |
||
300 | * Créer une méthode |
||
301 | * |
||
302 | * @param int $key La clé de la méthode à créer (tableau $this->méthode) |
||
303 | * |
||
304 | * @return void |
||
305 | */ |
||
306 | protected function genereMethode($key) |
||
316 | |||
317 | /** |
||
318 | * Lance la génération de la classe. |
||
319 | * |
||
320 | * @return string La classe généré |
||
321 | */ |
||
322 | public function genere() |
||
382 | } |
||
383 |