重写yii的cjson为wjson输出model支持自定义变量
因yii的cjson输出model时只能输出attributes变量,不能输出自定义变量,重新此类使之可以输出自定义变量
<?php
/**
* @author PHP中文网
* 重写YII的CJSON为WJSON输出model支持自定义变量
* Class WJSON
*/
class WJSON extends CJSON {
protected static function nameValue($name, $value) {
return self::encode(strval($name)) . ':' . self::encode($value);
}
public static function encode($var) {
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false';
case 'NULL':
return 'null';
case 'integer':
return (int)$var;
case 'double':
case 'float':
return str_replace(',', '.', (float)$var); // locale-independent representation
case 'string':
if (($enc = strtoupper(Yii::app()->charset)) !== 'UTF-8')
$var = iconv($enc, 'UTF-8', $var);
if (function_exists('json_encode'))
return json_encode($var);
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
/*
* Iterate over every character in the string,
* escaping with a slash or encoding to UTF-8 where necessary
*/
for ($c = 0; $c = 0x20) && ($ord_var_c $v)
$vars[$k] = $v;
} else
$vars = get_object_vars($var);
// related
foreach ($var->relations() as $key => $related) {
if ($var->hasRelated($key)) {
$vars[$key] = $var->$key;
}
}
return '{' .
join(',', array_map(array('WJSON', 'nameValue'),
array_keys($vars),
array_values($vars)))
. '}';
default:
return '';
}
}
}










