Blog

Configuration de module multi-fichiers sous Zend Framework 2


Zend Framework 2

Pour les obsédés du rangement voici une astuce pour permettre de gérer vos configurations de modules sous Zend Framework 2 de façon plus lisible. Cette solution vous permet de configurer vos modules ZF2 via différents fichiers afin de facilité la gestion de vos développements notamment lorsque vous travailler en collaboration avec d’autres développeurs.

Cette méthode offre plus de visiblité surtout quand vos modules nécessitent beaucoup de configuration comme les routes, les définitions d’objects, de factories ou encore les droits d’accès.

Pour cela c’est très simple, décompsez vos configurations dans votre module comme cela :

Avant :

/chemin/du/module/config/module.config.php

Après :

/chemin/du/module/config/module.config.php
/chemin/du/module/config/module.config.routes.php
/chemin/du/module/config/module.config.navigations.php
/chemin/du/module/config/module.config.rbac.php
/chemin/du/module/config/module.config.orm.php

On peut noter que le fichier module.config.php est toujours présent, il contient les configuration par défaut du module comme la déclaration des controllers, des plugins , du view manager etc … Les nouveau fichiers eux contiennent les informations propres aux modules additionnels ou aux informations volumineuses comme la gestion des routes.

Naturellement vous pouvez décomposer les informations comme bon vous semble…

La dernière étape consiste à lire les informations de configuration du module. Cela se passe dans le fichier Module.php de votre module en modifiant la fonction getConfig() comme cela :

    public function getConfig()
    {
    	$config = array();
    	$configFiles = array(
    		__DIR__ . '/config/module.config.php',
    		__DIR__ . '/config/module.config.routes.php',
    		__DIR__ . '/config/module.config.navigations.php',
    		__DIR__ . '/config/module.config.rbac.php',
    		__DIR__ . '/config/module.config.rbac.php'
    	);
    	foreach ($configFiles as $configFile) {
    	    if(file_exists($configFile))
    		$config = \Zend\Stdlib\ArrayUtils::merge($config, include $configFile);
    	}
    	return $config;
    }

Ce mode de fonctionnement est également compatible avec la mise en cache des configurations proposée nativement par Zend Framework 2.


Leave a comment