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:

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);
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')....

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

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;
	}
et déléguer $this->view->pagename dans chaque action...... encore la il faut le faire pour chaque controlleur... :S:S

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