TigerZF
🌐Español

21.4. Zend_Config_Json

21.4.1. Resumen

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.

21.4.2. Inicio rápido

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);
[Warning] 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.

21.4.3. Opciones de configuración

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_Config es marcar el objeto como inmutable una vez cargado. Pasar este indicador con un valor booleano true habilitará las modificaciones en el objeto.

skip_extends/skipExtends

De forma predeterminada, cada vez que una sección extiende otra, Zend_Config combinará la sección con la sección que extiende. Especificar un valor booleano true en 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_Json reemplazará los nombres de constantes encontrados en los valores por el valor de la constante definida. Puede pasar un valor booleano true a 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.

21.4.4. Métodos disponibles

__construct($json, $section = null, $options = false);

Constructor. $json debe 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. $options se 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 true a este método sobrescribirá ese comportamiento. (También puede sobrescribirlo por instancia mediante la opción ignore_constants.)

ignoreConstants();

Este método estático proporciona la configuración actual para el indicador ignore_constants.