Spec-Zone.ru › Yii 1.1

CJavaScript

Пакет system.web.helpers
Наследование класс CJavaScript
С момента 1.0
Исходный код framework/web/helpers/CJavaScript.php
CJavaScript — это вспомогательный класс, содержащий функции обработки, связанные с JavaScript.

Общедоступные методы

Метод Описание Определено в
encode() Кодирует переменную PHP в представление JavaScript. CJavaScript
jsonDecode() Декодирует строку JSON. CJavaScript
jsonEncode() Возвращает представление JSON данных PHP. CJavaScript
quote() Обрамляет строку JavaScript кавычками. CJavaScript

Подробное описание методов

encode() метод

public static string encode(mixed $value, boolean $safe=false)
$value смешанный тип Переменная PHP, подлежащая кодированию
$safe булево Если true, «js:» не будет разрешено. В случае обертывания кода с помощью CJavaScriptExpression выражение JavaScript останется неизменным независимо от значения этого параметра. Значение по умолчанию — false. Этот параметр доступен с версии 1.1.11.
{return} строка закодированная строка
Исходный код: 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 
'';
}

Кодирует переменную PHP в представление JavaScript.

Пример:

$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'}


Для сложных структур данных используйте jsonEncode и jsonDecode для сериализации и десериализации.

Если вы кодируете пользовательский ввод, убедитесь, что $safe установлен в true.

jsonDecode() метод

public static mixed jsonDecode(string $data, boolean $useArray=true)
$data строка данные для декодирования
$useArray булево использовать ассоциативный массив для представления данных объекта
{return} смешанный тип декодированные данные PHP
Исходный код: framework/web/helpers/CJavaScript.php#125 (показать)
public static function jsonDecode($data,$useArray=true)
{
    return 
CJSON::decode($data,$useArray);
}

Декодирует строку JSON.

jsonEncode() метод

public static string jsonEncode(mixed $data)
$data смешанный тип данные для кодирования
{return} строка представление JSON данных PHP.
Исходный код: framework/web/helpers/CJavaScript.php#114 (показать)
public static function jsonEncode($data)
{
    return 
CJSON::encode($data);
}

Возвращает представление JSON данных PHP.

quote() метод

public static string quote(string $js, boolean $forUrl=false)
$js строка строка, подлежащая обрамлению кавычками
$forUrl булево используется ли эта строка в качестве URL
{return} строка обрамлённая строка
Исходный код: 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);
}

Обрамляет строку JavaScript кавычками. После обработки строка может быть безопасно включена в кавычки и использована как строка JavaScript.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CJavaScript

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API