JSON est un acronyme pour "JavaScript Object
Notation"; compatible avec JavaScript, c'est un format d'échange de données
inter-langage. Zend_Config_Json
est une extension de
Zend_Config
permettant l'utilisation du format
JSON.
Voici une version JSON de la configuration d'une application standard.
{ "production":{ "phpSettings":{ "display_startup_errors": false, "display_errors": false }, "includePaths":{ "library": "APPLICATION_PATH/../library" }, "bootstrap":{ "path": "APPLICATION_PATH/Bootstrap.php", "class": "Bootstrap" }, "appnamespace": "Application",, "resources":{ "frontController":{ "controllerDirectory": "APPLICATION_PATH/controllers", "moduleDirectory": "APPLICATION_PATH/modules", "params":{ "displayExceptions": false } }, "modules":[], "db":{ "adapter": "pdo_sqlite", "params":{ "dbname": "APPLICATION_PATH/../data/db/application.db" } }, "layout":{ "layoutPath": "APPLICATION_PATH/layouts/scripts/" } } }, "staging":{ "_extends": "production" }, "testing":{ "_extends": "production", "phpSettings":{ "display_startup_errors": true, "display_errors": true }, }, "development":{ "_extends": "production", "phpSettings":{ "display_startup_errors": true, "display_errors": true }, "resources":{ "frontController":{ "params":{ "displayExceptions": true } } } } }
Pour l'utiliser, instanciez simplement Zend_Config_Json
en lui
indiquant le chemin vers ce fichier ainsi que la section à charger. Par défaut,
les constantes trouvées dans les valeurs seront substituées par leurs valeurs.
$config = new Zend_Config_Json( APPLICATION_PATH . '/configs/application.json', APPLICATION_ENV );
Une fois instancié, l'utilisation est classique, comme un objet de configuration.
$db = Zend_Db::factory($config->resources->db);
Utilisez les constantes avec précaution
JSON possède une structure stricte concernant les types de données. Ainsi, vous devez vous assurer que vos constantes sont utilisées correctement. Pour les constantes de type chaîne de caractères, encapsulez les avec des doubles quotes (""). Pour les constantes d'autres types, vous pouvez omettre les quotes, mais soyez alors certains qu'elles ne retournent pas des chaînes, sinon vous rencontrerez des erreurs d'analyse. Si vous doutez, encapsulez le contenu dans des chaînes à doubles quotes.
Les options suivantes peuvent être passées comme clés au troisième paramètre
$options
du constructeur.
Zend_Config_Json Options
- allow_modifications/allowModifications
-
Par défaut,
Zend_Config
est en lecture seule. Passer cette option àtrue
autorisera la modification de l'objet. - skip_extends/skipExtends
-
Par défaut, à chaque fois qu'une section étend une autre,
Zend_Config
regroupera cette section avec son parent. Utiliser le booléentrue
pour cette option désactivera ce comportement, la configuration de la section sera telle-quelle. - ignore_constants
-
Par défaut,
Zend_Config_Json
remplacera toutes les constantes trouvées dans le fichier par leurs valeurs respectives. Passez le booléentrue
à cette option pour désactiver cette fonctionnalité.Notez qu'ignorer les constantes peut mener à des erreurs d'analyse, en particulier si les constantes sont utilisées pour des entiers, des flottants ou des valeurs booléennes. La manière la plus sûre est d'encapsuler les constantes dans des quotes.
-
__construct( $json, $section = null, $options = false );
-
Constructeur.
$json
doit être une chaîne de caractères JSON valide ou doit pointer vers un fichier JSON valide. Si$section
est précisé, seule la section indiquée sera analysée.$options
est documenté dans la section options. -
setIgnoreConstants( $flag );
-
Cette méthode statique est utilisée pour changer le comportement global de l'analyse des constantes trouvées dans les fichiers JSON. Par défaut, les constantes sont remplacées par leurs valeurs. Passer le booléen
true
à cette méthode surchargera ce comportement. (Vous pouvez changer le comportement par instance en utilisant l'optionignore_constants
.) -
ignoreConstants( );
-
Cette méthode statique retourne la valeur actuelle de
ignore_constants
.