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