Package | system.web.helpers |
---|---|
Inheritance | class CJavaScript |
Since | 1.0 |
Source Code | framework/web/helpers/CJavaScript.php |
Method | Description | Defined By |
---|---|---|
encode() | Encodes a PHP variable into javascript representation. | CJavaScript |
jsonDecode() | Decodes a JSON string. | CJavaScript |
jsonEncode() | Returns the JSON representation of the PHP data. | CJavaScript |
quote() | Quotes a javascript string. | CJavaScript |
public static string encode(mixed $value, boolean $safe=false)
| ||
$value | mixed | PHP variable to be encoded |
$safe | boolean | If true, 'js:' will not be allowed. In case of wrapping code with CJavaScriptExpression JavaScript expression will stay as is no matter what value this parameter is set to. Default is false. This parameter is available since 1.1.11. |
{return} | string | the encoded string |
public static function encode($value,$safe=false)
{
if(is_string($value))
{
if(strpos($value,'js:')===0 && $safe===false)
return substr($value,3);
else
return "'".self::quote($value)."'";
}
elseif($value===null)
return 'null';
elseif(is_bool($value))
return $value?'true':'false';
elseif(is_integer($value))
return "$value";
elseif(is_float($value))
{
if($value===-INF)
return 'Number.NEGATIVE_INFINITY';
elseif($value===INF)
return 'Number.POSITIVE_INFINITY';
else
return str_replace(',','.',(float)$value); // locale-independent representation
}
elseif($value instanceof CJavaScriptExpression)
return $value->__toString();
elseif(is_object($value))
return self::encode(get_object_vars($value),$safe);
elseif(is_array($value))
{
$es=array();
if(($n=count($value))>0 && array_keys($value)!==range(0,$n-1))
{
foreach($value as $k=>$v)
$es[]="'".self::quote($k)."':".self::encode($v,$safe);
return '{'.implode(',',$es).'}';
}
else
{
foreach($value as $v)
$es[]=self::encode($v,$safe);
return '['.implode(',',$es).']';
}
}
else
return '';
}
Encodes a PHP variable into javascript representation.
Example:
$options=array('key1'=>true,'key2'=>123,'key3'=>'value'); echo CJavaScript::encode($options); // The following javascript code would be generated: // {'key1':true,'key2':123,'key3':'value'}
public static mixed jsonDecode(string $data, boolean $useArray=true)
| ||
$data | string | the data to be decoded |
$useArray | boolean | whether to use associative array to represent object data |
{return} | mixed | the decoded PHP data |
public static function jsonDecode($data,$useArray=true)
{
return CJSON::decode($data,$useArray);
}
Decodes a JSON string.
public static string jsonEncode(mixed $data)
| ||
$data | mixed | the data to be encoded |
{return} | string | the JSON representation of the PHP data. |
public static function jsonEncode($data)
{
return CJSON::encode($data);
}
Returns the JSON representation of the PHP data.
public static string quote(string $js, boolean $forUrl=false)
| ||
$js | string | string to be quoted |
$forUrl | boolean | whether this string is used as a URL |
{return} | string | the quoted string |
public static function quote($js,$forUrl=false)
{
$js = (string)$js;
Yii::import('system.vendors.zend-escaper.Escaper');
$escaper=new Escaper(Yii::app()->charset);
if($forUrl)
return $escaper->escapeUrl($js);
else
return $escaper->escapeJs($js);
}
Quotes a javascript string. After processing, the string can be safely enclosed within a pair of quotation marks and serve as a javascript string.
CJavaScript::encode
This function doesn't add quotes around value if content is string and begins from "js:" without quotes.
Signup or Login in order to comment.