Introducción a Zend Framework

 Aprendiendo Zend Framework

Apéndice

 Referencia de Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Traducción al 26.9% - Actualizado el 2011-11-16 - Revisión 24249 - Versión ZF 1.11.x

    39.3. Uso Avanzado de Zend_Json

    39.3.1. Objetos JSON

    Cuando se codifican objetos PHP como JSON , todas las propiedades públicas de ese objeto serán codificadas en un objeto JSON .

    JSON no permite referencias a objetos, de manera que debe tenerse cuidado de no codificar objetos con referencias recursivas. Si tiene problemas con la recursión, Zend_Json::encode() y Zend_Json_Encoder::encode() permiten un segundo parámetro opcional para comprobar si hay recursión; si un objeto es serializado dos veces, se emitirá una excepción.

    La decodificación de objetos JSON plantea una dificultad adicional, sin embargo, ya que los objetos Javascript se corresponden más estrechamente a un array asociativo de PHP . Algunos sugieren que debe pasarse un identificador de clase, y una instancia del objeto de esa clase debe crearse y alimentarla con datos de pares clave/valor del objeto JSON ; otros consideran que esto podría plantear un considerable riesgo de seguridad.

    Por defecto, Zend_Json decodificará objetos JSON como arrays asociativos. Sin embargo, si desea retornar un objeto, puede especificar esto:

    // Decodifica objetos JSON como objetos PHP
    $phpNative Zend_Json::decode($encodedValueZend_Json::TYPE_OBJECT);

    Por lo tanto, cualquiera de los objetos decodificados son devueltos como objetos StdClass con propiedades correspondientea a pares clave/valor en la notación JSON .

    La recomendación de Zend Framework es que el desarrollador debe decidir cómo decodificar objetos JSON . Si debe crearse un objeto de un determinado tipo, puede ser creado en el código del desarrollador y alimentado con datos de los valores decodificados utilizando Zend_Json .

    39.3.2. Codificando Objetos PHP

    Si se codifican objetos PHP por defecto, el mecanismo de codificación sólo tiene acceso a las propiedades públicas de estos objetos. Cuando se implementa un método toJson() en un objeto a codificar, Zend_Json llama a este método y espera que el objeto devuelva una representación JSON de su estado interno.

    39.3.3. Codificador/Decodificador Interno

    Zend_Json tiene dos modos diferentes dependiendo de si ext/json está habilitada o no en su instalación PHP . Si ext/json está instalado por defecto, las funciones json_encode() y json_decode() se utilizan para la codificación y decodificación JSON . Si ext/json no está instalado, una implementación de Zend Framework en código PHP es utilizada para la codificación/decodificación. Esto es considerablemente más lento que usando la extensión de PHP , pero se comporta exactamente igual.

    También algunas veces puede querer utilizar el codificador/decodificador interno incluso si tiene ext/json instalado. Puede hacer esto llamando a:

    Zend_Json::$useBuiltinEncoderDecoder true:

    39.3.4. Expresiones JSON

    Javascript hace uso intenso de las funciones anónimas de llamadas de retorno, que pueden guardarse en variables del objeto JSON . Aunque solo funcionan si no regresaron dentro comillas dobles, que es lo que hace naturalmente Zend_Json . Con la Expression de apoyo para Zend_Json este apoyo puede codificar objetos JSON con callbacks validos de javascript. Esto funciona tanto con json_encode() como con el codificador interno.

    Un callback javascript se representa usando el objero Zend_Json_Expr . Este implementa el patrón del objeto valor y es inmutable. Se puede establecer la expresión de javascript como el primer argumento del constructor. Por defecto Zend_Json::encode no codifica callbacks javascript, usted tiene que pasar la opción 'enableJsonExprFinder' = true dentro de la función encode . Si se habilita, la expresión de apoyo trabaja para todas las expresiones anidadas en grandes estructuras de objetos. Un ejemplo de uso se vería así:

    $data = array(
        
    'onClick' => new Zend_Json_Expr('function() {'
                  
    'alert("Yo soy un callback válido de javascript '
                  
    'creado por Zend_Json"); }'),
        
    'other' => 'sin expresión',
    );
    $jsonObjectWithExpression Zend_Json::encode(
        
    $data,
        
    false,
        array(
    'enableJsonExprFinder' => true)
    );
    digg delicious meneame google twitter technorati facebook

    Comentarios

    Loading...