Bonjour à tous,
j'utilise le Zend_Config_Ini pour lire un fichier de type .ini pour stocker mes configurations de site dans ma variable ou objet $config. Tout simplement WoW! On peut faire hériter les configurations de prod vs dev, etc....
En second lieu, pour avoir accès à ma variable $config partout, on dit d'utiliser le Zend_Registry qui est en réalité un singleton! Je fais de même avec $db qui contient en réalité l'espèce de handler que je voudrait utiliser partout. Voici le plus important de mon fichier index.php:
Ainsi, peu importe où le code sera, je pourrai avoir théoriquement accès à ces variables.... Ce que je trouve un peu irritant est d'accéder à ces deux variables ou objets dans mes controlleurs car je dois continuellement faire un Zend_Registry::get('config') et Zend_Registry::get('db')....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $config = new Zend_Config_Ini(dirname(__FILE__).'/../application/config/config.ini', 'staging'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); ... $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); $registry->set('db', $db);
Devrais-je les stocker dans une variable privée de chaque classe controlleur lors de l'init() de celles-ci?
Ca arrange pas mon problème, car je veux tout autant que mes views scripts puissent accéder à une portion de ma $config. Par exemple, je veux que le $config->template->baseurl ou $config->global->sitename soient incluent dans mes scripts de vues......
Cela devient un peu «error prone» de faire dans toutes les actions de tous mes controlleurs le genre de chose suivante:
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 public function indexAction() { $config = Zend_Registry::get('config'); $this->view->siteName = $config->global->siteName; $this->view->pageName = "Users administration"; ... public function searchAction() { $config = Zend_Registry::get('config'); $this->view->siteName = $config->global->siteName; $this->view->pageName = "Search users"; public function listAction() { $config = Zend_Registry::get('config'); $this->view->siteName = $config->global->siteName; $this->view->pageName = "List users"; ....
Il est évident que déclarer $config en global et hors de tout doute une mauvaise pratique, et vous me direz peut-etre que c'est ce que je semble chercher à faire!
Que dois-je faire? Meilleure pratique? Ce que je pense faire est d'initialiser le $config dans le init(), ce qui est commun à tout le controlleur, de faire
et déléguer $this->view->pagename dans chaque action...... encore la il faut le faire pour chaque controlleur... :S:S
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function init() { $config = Zend_Registry::get('config'); $this->view->siteName = $config->global->siteName; }
ais-je ratté completement le principe? Je cherche la perfection peut etre trop.... mais je veux bien démarer le projet... c'est tout
Merci
Partager