Clase PHP Javascript: los métodos que construyen objetos pueden producir...
XGAP is a PHP web application generator
Status: Abandoned
Brought to you by:
pabrile
Los métodos de la clase PHP Javascript que construyen objetos producen código javascript inválido si alguna de las claves de los arreglos que reciben no corresponde a un nombre de propiedad válido para javascript, dado que las claves de los objetos se emiten sin comillas.
Ejemplos que generan objetos javascript inválidos:
<?php
Javascript::construirObjeto(array('una-clave' => 42));
// Genera { una-clave: 42 }
// ^ error
Javascript::construirArray(array('a', 'x-y', array('b' => 'ok', '%prop' => 'err')));
// Genera [ 'a', 'x-y', { b: "ok", %prop: 'err' } ]
// ^ error
Para solucionarlo, las claves que no correspondan a nombres de propiedad válidos en javascript se deben emitir encerradas entre comillas:
{ "una-clave": 42 }
Diff:
Resuelto en [r951].
Se agregó el parámetro
$claves_como_stringsenJavascript::construirLista(),Javascript::construirObjeto()yJavascript::construirArray(), con defaultfalsepara no cambiar el comportamiento existente.Este parámetro permite a los clientes indicar cuándo se deben usar comillas en los nombres de propiedades, en literales de objetos.
Las comillas se podrían emitir automáticamente cuando una clave recibida no corresponde a un nombre de propiedad válido, para evitar construir un objeto inválido independientemente del valor del nuevo parámetro, pero esto requiere validar en PHP que un string dado sea válido como nombre de propiedad en javascript, y gramática que los define es compleja. Esto se puede implementar más adelante.
Related
Commit: [r951]
Diff: