CFormatter
| Пакет | system.utils |
|---|---|
| Наследование | class CFormatter » CApplicationComponent » CComponent |
| Реализует | IApplicationComponent |
| Подклассы | CLocalizedFormatter |
| С | 1.1.0 |
| Исходный код | framework/utils/CFormatter.php |
Методы форматирования, предоставляемые CFormatter, все имеют имена в формате
formatXyz. Поведение некоторых из них может быть настроено через свойства CFormatter. Например, настроив dateFormat, можно управлять тем, как formatDate форматирует значение в строку даты. Для удобства CFormatter также реализует механизм вызова методов форматирования с их сокращениями (называемыми типами). В частности, если метод форматирования имеет имя
formatXyz, то его метод-сокращение — xyz (регистронезависимо). Например, вызов $formatter->date($value) эквивалентен вызову $formatter->formatDate($value). В настоящее время распознаются следующие типы:
- raw: значение атрибута не будет изменено вообще.
- text: значение атрибута будет закодировано в HTML при отрисовке.
- ntext: метод formatNtext будет вызван для форматирования значения атрибута как HTML-закодированного простого текста с переводами строк, преобразованными в теги HTML <br /> или <p></p>.
- html: значение атрибута будет очищено и затем возвращено.
- date: метод formatDate будет вызван для форматирования значения атрибута как даты.
- time: метод formatTime будет вызван для форматирования значения атрибута как времени.
- datetime: метод formatDatetime будет вызван для форматирования значения атрибута как даты с временем.
- boolean: метод formatBoolean будет вызван для форматирования значения атрибута как логического отображения.
- number: метод formatNumber будет вызван для форматирования значения атрибута как числового отображения.
- email: метод formatEmail будет вызван для форматирования значения атрибута как ссылки mailto.
- image: метод formatImage будет вызван для форматирования значения атрибута как тега изображения, где значение атрибута — URL изображения.
- url: метод formatUrl будет вызван для форматирования значения атрибута как гиперссылки, где значение атрибута — URL.
- size: метод formatSize будет вызван для форматирования значения атрибута, интерпретируемого как число байтов, как размера в читаемой форме.
По умолчанию CApplication регистрирует CFormatter как компонент приложения с идентификатором 'format'. Таким образом, можно вызвать
Yii::app()->format->boolean(1). Возможно, вам потребуется заменить этот компонент на CLocalizedFormatter, чтобы включить форматирование на основе текущих настроек локали.Свойства публичного доступа
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| behaviors | массив | Поведение, которое должно быть прикреплено к этому компоненту. | CApplicationComponent |
| booleanFormat | массив | Текст, который должен отображаться при форматировании логического значения. | CFormatter |
| dateFormat | строка | Строка формата, которая должна использоваться для форматирования даты с помощью функции PHP date(). | CFormatter |
| datetimeFormat | строка | Строка формата, которая должна использоваться для форматирования даты и времени с помощью функции PHP date(). | CFormatter |
| htmlPurifier | CHtmlPurifier | экземпляр HTML очистителя | CFormatter |
| htmlPurifierOptions | массив | Параметры, которые должны быть переданы экземпляру CHtmlPurifier, используемому в этом классе. | CFormatter |
| isInitialized | логическое значение | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| numberFormat | массив | Формат, используемый для форматирования числа с помощью функции PHP number_format(). | CFormatter |
| sizeFormat | массив | Формат, используемый для форматирования размера (байты). | CFormatter |
| timeFormat | строка | Строка формата, которая должна использоваться для форматирования времени с помощью функции PHP date(). | CFormatter |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод format, когда вызывается его сокращение. | CFormatter |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение, основанные на его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения по имени. | CComponent |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикрепленные поведения к этому компоненту. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикрепленные поведения к этому компоненту. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| format() | Форматирует значение на основе заданного типа. | CFormatter |
| formatBoolean() | Форматирует значение как булево. | CFormatter |
| formatDate() | Форматирует значение как дату. | CFormatter |
| formatDatetime() | Форматирует значение как дату и время. | CFormatter |
| formatEmail() | Форматирует значение как ссылку mailto. | CFormatter |
| formatHtml() | Форматирует значение как HTML-текст без кодирования. | CFormatter |
| formatImage() | Форматирует значение как тег изображения. | CFormatter |
| formatNtext() | Форматирует значение как HTML-кодированный обычный текст и преобразует новые строки в HTML <br /> или | CFormatter |
| formatNumber() | Форматирует значение как число с помощью функции PHP number_format(). | CFormatter |
| formatRaw() | Форматирует значение как есть без форматирования. | CFormatter |
| formatSize() | Форматирует значение в байтах как размер в удобочитаемой форме. | CFormatter |
| formatText() | Форматирует значение как HTML-кодированный обычный текст. | CFormatter |
| formatTime() | Форматирует значение как время. | CFormatter |
| formatUrl() | Форматирует значение как гиперссылку. | CFormatter |
| getEventHandlers() | Возвращает список прикрепленных обработчиков событий для события. | CComponent |
| getHtmlPurifier() | Возвращает экземпляр HTML-очистителя | CFormatter |
| getIsInitialized() | Проверяет, был ли инициирован этот компонент приложения. | CApplicationComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли прикрепленные обработчики для события с заданным именем. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует компонент приложения. | CApplicationComponent |
| raiseEvent() | Возбуждает событие. | CComponent |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| normalizeDateValue() | Нормализует выражение как метку времени. | CFormatter |
Подробности свойств
booleanFormat свойство
public array $booleanFormat;
текст, отображаемый при форматировании булева значения. Первый элемент соответствует отображению текста для false, второй — для true. По умолчанию array('No', 'Yes').
dateFormat свойство
public string $dateFormat;
строка формата, используемая для форматирования даты с помощью функции PHP date(). По умолчанию 'Y/m/d'.
datetimeFormat свойство
public string $datetimeFormat;
строка формата, используемая для форматирования даты и времени с помощью функции PHP date(). По умолчанию 'Y/m/d h:i:s A'.
htmlPurifier свойство только для чтения
public CHtmlPurifier getHtmlPurifier()
экземпляр HTML-очистителя
htmlPurifierOptions свойство (доступно начиная с версии v1.1.13)
public array $htmlPurifierOptions;
параметры, передаваемые экземпляру CHtmlPurifier, используемому в этом классе. CHtmlPurifier используется в методе formatHtml, поэтому это свойство может быть полезно для настройки поведения фильтрации HTML.
numberFormat свойство
public array $numberFormat;
формат, используемый для форматирования числа с помощью функции PHP number_format(). Можно указать три элемента: "decimals", "decimalSeparator" и "thousandSeparator". Они соответствуют количеству цифр после десятичной точки, символу, отображаемому в качестве десятичной точки, и символу разделителя тысяч.
sizeFormat свойство (доступно начиная с версии v1.1.11)
public array $sizeFormat;
формат, используемый для форматирования размера (байты). Можно указать три элемента: "base", "decimals" и "decimalSeparator". Они соответствуют основанию, на котором рассчитывается килобайт (1000 или 1024 байта на килобайт, по умолчанию 1024), количеству цифр после десятичной точки (по умолчанию 2) и символу, отображаемому в качестве десятичной точки. "decimalSeparator" доступен начиная с версии 1.1.13.
timeFormat свойство
public string $timeFormat;
строка формата, используемая для форматирования времени с помощью функции PHP date(). По умолчанию 'h:i:s A'.
Подробности методов
__call() метод
public mixed __call(string $name, array $parameters) | ||
| $name | string | имя метода |
| $parameters | array | параметры метода |
| {return} | mixed | значение, возвращаемое методом |
public function __call($name,$parameters)
{
if(method_exists($this,'format'.$name))
return call_user_func_array(array($this,'format'.$name),$parameters);
else
return parent::__call($name,$parameters);
}
Вызывает метод format, когда вызывается его сокращенная форма. Это магический метод PHP, который мы переопределяем для реализации сокращенных методов форматирования.
format() метод
public string format(mixed $value, string $type) | ||
| $value | mixed | значение, подлежащее форматированию |
| $type | string | тип данных. Он должен соответствовать методу форматирования, доступному в CFormatter. Например, здесь мы можем использовать 'text', так как есть метод с именем formatText. |
| {return} | string | отформатированные данные |
public function format($value,$type)
{
$method='format'.$type;
if(method_exists($this,$method))
return $this->$method($value);
else
throw new CException(Yii::t('yii','Unknown type "{type}".',array('{type}'=>$type)));
}
Форматирует значение на основе заданного типа.
formatBoolean() метод
public string formatBoolean(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatBoolean($value)
{
return $value ? $this->booleanFormat[1] : $this->booleanFormat[0];
}
Форматирует значение как булево.
См. также
formatDate() метод
public string formatDate(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatDate($value)
{
return date($this->dateFormat,$this->normalizeDateValue($value));
}
Форматирует значение как дату.
См. также
formatDatetime() метод
public string formatDatetime(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatDatetime($value)
{
return date($this->datetimeFormat,$this->normalizeDateValue($value));
}
Форматирует значение как дату и время.
См. также
formatEmail() метод
public string formatEmail(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatEmail($value)
{
return CHtml::mailto($value);
}
Форматирует значение как ссылку mailto.
formatHtml() метод
public string formatHtml(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatHtml($value)
{
return $this->getHtmlPurifier()->purify($value);
}
Форматирует значение как HTML-текст без кодирования.
formatImage() метод
public string formatImage(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatImage($value)
{
return CHtml::image($value);
}
Форматирует значение как тег изображения.
formatNtext() метод
public string formatNtext(mixed $value, boolean $paragraphs=false, boolean $removeEmptyParagraphs=true) | ||
| $value | mixed | значение, подлежащее форматированию |
| $paragraphs | boolean | нужно ли преобразовывать новые строки в HTML-теги <p></p>; по умолчанию false, что означает использование тегов HTML <br /> |
| $removeEmptyParagraphs | boolean | нужно ли удалять пустые абзацы; по умолчанию true; имеет смысл только если параметр $paragraphs равен true |
| {return} | string | отформатированный результат |
public function formatNtext($value,$paragraphs=false,$removeEmptyParagraphs=true)
{
$value=CHtml::encode($value);
if($paragraphs)
{
$value='<p>'.str_replace(array("\r\n", "\n", "\r"), '</p><p>',$value).'</p>';
if($removeEmptyParagraphs)
$value=preg_replace('/(<\/p><p>){2,}/i','</p><p>',$value);
return $value;
}
else
{
return nl2br($value);
}
}
Форматирует значение как HTML-кодированный простой текст и преобразует новые строки с помощью тегов HTML <br /> или <p></p>.
formatNumber() метод
public string formatNumber(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatNumber($value)
{
return number_format($value,$this->numberFormat['decimals'],$this->numberFormat['decimalSeparator'],$this->numberFormat['thousandSeparator']);
}
Форматирует значение как число, используя функцию PHP number_format().
См. также
formatRaw() метод
public string formatRaw(mixed $value) | ||
| $value | mixed | значение, подлежащее форматированию |
| {return} | string | отформатированный результат |
public function formatRaw($value)
{
return $value;
}
Форматирует значение без изменений. Этот метод просто возвращает параметр без форматирования.
formatSize() метод (доступен начиная с v1.1.11)
public string formatSize(integer $value, boolean $verbose=false) | ||
| $value | integer | значение в байтах для форматирования |
| $verbose | boolean | использовать полные названия (например, байты, килобайты) или короткие (например, Б, КБ) по умолчанию |
| {return} | string | отформатированный результат |
public function formatSize($value,$verbose=false)
{
$base=$this->sizeFormat['base'];
for($i=0; $base<=$value && $i<5; $i++)
$value=$value/$base;
$value=round($value, $this->sizeFormat['decimals']);
$formattedValue=isset($this->sizeFormat['decimalSeparator']) ? str_replace('.',$this->sizeFormat['decimalSeparator'],$value) : $value;
$params=array($value,'{n}'=>$formattedValue);
switch($i)
{
case 0:
return $verbose ? Yii::t('yii','{n} byte|{n} bytes',$params) : Yii::t('yii', '{n} B',$params);
case 1:
return $verbose ? Yii::t('yii','{n} kilobyte|{n} kilobytes',$params) : Yii::t('yii','{n} KB',$params);
case 2:
return $verbose ? Yii::t('yii','{n} megabyte|{n} megabytes',$params) : Yii::t('yii','{n} MB',$params);
case 3:
return $verbose ? Yii::t('yii','{n} gigabyte|{n} gigabytes',$params) : Yii::t('yii','{n} GB',$params);
default:
return $verbose ? Yii::t('yii','{n} terabyte|{n} terabytes',$params) : Yii::t('yii','{n} TB',$params);
}
}
Форматирует значение в байтах как размер в удобочитаемой форме.
См. также
formatText() метод
public string formatText(mixed $value) | ||
| $value | mixed | значение для форматирования |
| {return} | строка | отформатированный результат |
public function formatText($value)
{
return CHtml::encode($value);
}
Форматирует значение как HTML-кодированный обычный текст.
formatTime() метод
public string formatTime(mixed $value) | ||
| $value | mixed | значение для форматирования |
| {return} | строка | отформатированный результат |
public function formatTime($value)
{
return date($this->timeFormat,$this->normalizeDateValue($value));
}
Форматирует значение как время.
См. также
formatUrl() метод
public string formatUrl(mixed $value) | ||
| $value | mixed | значение для форматирования |
| {return} | строка | отформатированный результат |
public function formatUrl($value)
{
$url=$value;
if(strpos($url,'http://')!==0 && strpos($url,'https://')!==0)
$url='http://'.$url;
return CHtml::link(CHtml::encode($value),$url);
}
Форматирует значение как гиперссылку.
getHtmlPurifier() метод
public CHtmlPurifier getHtmlPurifier() | ||
| {return} | CHtmlPurifier | экземпляр очистителя HTML |
public function getHtmlPurifier()
{
if($this->_htmlPurifier===null)
$this->_htmlPurifier=new CHtmlPurifier;
$this->_htmlPurifier->options=$this->htmlPurifierOptions;
return $this->_htmlPurifier;
}
normalizeDateValue() метод
protected int normalizeDateValue(mixed $time) | ||
| $time | mixed | выражение времени для нормализации |
| {return} | целое число | нормализованный результат в формате метки времени Unix |
protected function normalizeDateValue($time)
{
if(is_string($time))
{
if(ctype_digit($time) || ($time{0}=='-' && ctype_digit(substr($time, 1))))
return (int)$time;
else
return strtotime($time);
}
elseif (class_exists('DateTime', false) && $time instanceof DateTime)
return $time->getTimestamp();
else
return (int)$time;
}
Нормализует выражение в метку времени.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CFormatter