CJavaScript
包 | system.web.helpers |
---|---|
继承 | class CJavaScript |
可用自 | 1.0 |
源码 | framework/web/helpers/CJavaScript.php |
CJavaScript is a helper class containing JavaScript-related handling functions.
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
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 |
方法详情
encode()
方法
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 |
源码: framework/web/helpers/CJavaScript.php#61 (显示)
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'}
For highly complex data structures use jsonEncode and jsonDecode to serialize and unserialize.
If you are encoding user input, make sure $safe is set to true.
jsonDecode()
方法
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 |
源码: framework/web/helpers/CJavaScript.php#125 (显示)
public static function jsonDecode($data,$useArray=true)
{
return CJSON::decode($data,$useArray);
}
Decodes a JSON string.
jsonEncode()
方法
public static string jsonEncode(mixed $data)
| ||
$data | mixed | the data to be encoded |
{return} | string | the JSON representation of the PHP data. |
源码: framework/web/helpers/CJavaScript.php#114 (显示)
public static function jsonEncode($data)
{
return CJSON::encode($data);
}
Returns the JSON representation of the PHP data.
quote()
方法
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 |
源码: framework/web/helpers/CJavaScript.php#28 (显示)
public static function quote($js,$forUrl=false)
{
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.