system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

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:')===&& $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))>&& 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.