JSON es un acrónimo de "JavaScript Object
Notation"; aunque compatible con JavaScript, también está pensado como un formato de
intercambio de datos multilenguaje de propósito general. Zend_Config_Json es una
extensión ligera de Zend_Config que utiliza JSON
como formato de serialización.
A continuación se muestra una versión en JSON de una configuración de aplicación estándar.
{
"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
}
}
}
}
}
Para utilizarlo, simplemente se instancia Zend_Config_Json, apuntando
a la ubicación de este archivo e indicando la sección del archivo que se desea cargar. De
forma predeterminada, los nombres de constantes encontrados en los valores serán sustituidos por sus
valores correspondientes.
$config = new Zend_Config_Json(
APPLICATION_PATH . '/configs/application.json',
APPLICATION_ENV
);
Una vez instanciado, se utiliza como cualquier otro objeto de configuración.
$db = Zend_Db::factory($config->resources->db);
![]() |
Utilice las constantes con precaución |
|---|---|
JSON tiene una estructura estricta en cuanto a los tipos de datos. Por ello, es necesario asegurarse de que las constantes se usan correctamente. Para las constantes que tienen valores de tipo cadena, ponga los valores de la constante entre comillas dobles (""). Para valores que no son de tipo cadena, puede omitir las comillas -- pero asegúrese absolutamente de que no están devolviendo cadenas, ya que de lo contrario encontrará errores de análisis en su archivo de configuración. En caso de duda, encierre la constante entre comillas dobles. |
Las siguientes opciones pueden pasarse como claves al tercer argumento del constructor, $options.
Opciones de Zend_Config_Json
- allow_modifications/allowModifications
El comportamiento predeterminado de
Zend_Configes marcar el objeto como inmutable una vez cargado. Pasar este indicador con un valor booleanotruehabilitará las modificaciones en el objeto.- skip_extends/skipExtends
De forma predeterminada, cada vez que una sección extiende otra,
Zend_Configcombinará la sección con la sección que extiende. Especificar un valor booleanotrueen esta opción desactivará esta funcionalidad, proporcionando únicamente la configuración definida explícitamente en esa sección.- ignore_constants
-
De forma predeterminada,
Zend_Config_Jsonreemplazará los nombres de constantes encontrados en los valores por el valor de la constante definida. Puede pasar un valor booleanotruea esta opción para desactivar esta funcionalidad.Tenga en cuenta que ignorar las constantes puede provocar potencialmente errores de análisis, particularmente si está usando constantes para valores enteros, de punto flotante o booleanos. La práctica más segura es encerrar las constantes entre comillas.
-
__construct($json, $section = null, $options = false); Constructor.
$jsondebe ser bien una cadena JSON válida, o hacer referencia a una ubicación de sistema de archivos válida que contenga un archivo de configuración JSON.$section, si se especifica, indica una sección específica de el archivo de configuración a usar.$optionsse discute en la sección de opciones.-
setIgnoreConstants($flag); Esta función estática puede usarse para sobrescribir globalmente la configuración predeterminada sobre cómo se gestionan las constantes encontradas en cadenas JSON. De forma predeterminada, los nombres de constantes se reemplazan por los valores de constante correspondientes; pasar un valor booleano
truea este método sobrescribirá ese comportamiento. (También puede sobrescribirlo por instancia mediante la opciónignore_constants.)-
ignoreConstants(); Este método estático proporciona la configuración actual para el indicador
ignore_constants.
![[Warning]](images/warning.png)