クラス yii\i18n\Formatter
継承 | yii\i18n\Formatter » yii\base\Component » yii\base\BaseObject |
---|---|
実装 | yii\base\Configurable |
利用可能なバージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/i18n/Formatter.php |
Formatter は、一般的に使用されるデータフォーマットメソッドのセットを提供します。
Formatter によって提供されるフォーマットメソッドはすべて、asXyz()
の形式で名前が付けられています。それらの一部は、Formatter のプロパティを通じて構成できます。たとえば、$dateFormat を構成することで、asDate() が値を日付文字列にフォーマットする方法を制御できます。
Formatter は、デフォルトで yii\base\Application のアプリケーションコンポーネントとして構成されます。Yii::$app->formatter
を介してそのインスタンスにアクセスできます。
Formatter クラスは、$locale に従って値をフォーマットするように設計されています。この機能が動作するためには、PHP intl 拡張機能をインストールする必要があります。ただし、ほとんどのメソッドは、PHP intl 拡張機能がインストールされていない場合でも、フォールバック実装を提供することで動作します。intl なしでは、月と日の名前は英語のみになります。 intl 拡張機能がインストールされている場合でも、32 ビットシステムでは 2038 年以降または 1901 年以前の年月の値をフォーマットすると、intl が内部で 32 ビットの UNIX タイムスタンプを使用するため、PHP 実装にフォールバックすることに注意してください。 64 ビットシステムでは、intl フォーマッタがインストールされている場合は、常に使用されます。
注意: Formatter クラスは、異なる言語やタイムゾーンのユーザーに表示するために値をフォーマットすることを目的としています。機械可読形式で日付や時刻をフォーマットする必要がある場合は、代わりに PHP の date() 関数を使用してください。
公開プロパティ
パブリックメソッド
メソッド | 説明 | 定義元 |
---|---|---|
__call() | クラスメソッドではない名前付きメソッドを呼び出します。 | yii\base\Component |
__clone() | このメソッドは、既存のオブジェクトをクローンしてオブジェクトが作成された後に呼び出されます。 | yii\base\Component |
__construct() | コンストラクタ。 | yii\base\BaseObject |
__get() | コンポーネントプロパティの値を返します。 | yii\base\Component |
__isset() | プロパティが設定されているか(定義されていて、nullではないか)を確認します。 | yii\base\Component |
__set() | コンポーネントプロパティの値を設定します。 | yii\base\Component |
__unset() | コンポーネントプロパティを null に設定します。 | yii\base\Component |
asBoolean() | 値をブール値としてフォーマットします。 | yii\i18n\Formatter |
asCurrency() | 値を通貨数値としてフォーマットします。 | yii\i18n\Formatter |
asDate() | 値を日付としてフォーマットします。 | yii\i18n\Formatter |
asDatetime() | 値を日時としてフォーマットします。 | yii\i18n\Formatter |
asDecimal() | 値を10進数としてフォーマットします。 | yii\i18n\Formatter |
asDuration() | 値を人間が読める形式の期間として表します。 | yii\i18n\Formatter |
asEmail() | 値を mailto リンクとしてフォーマットします。 | yii\i18n\Formatter |
asHtml() | 値を HTML テキストとしてフォーマットします。 | yii\i18n\Formatter |
asImage() | 値をイメージタグとしてフォーマットします。 | yii\i18n\Formatter |
asInteger() | 値を丸めずに小数点以下を削除して整数としてフォーマットします。 | yii\i18n\Formatter |
asLength() | 値を人間が読める形式の長さ(例:12 メートル )としてフォーマットします。 |
yii\i18n\Formatter |
asNtext() | 改行が改行に変換された HTML エンコードされたプレーンテキストとして値をフォーマットします。 | yii\i18n\Formatter |
asOrdinal() | 値を数値の序数値としてフォーマットします。 | yii\i18n\Formatter |
asParagraphs() | 値を HTML エンコードされたテキスト段落としてフォーマットします。 | yii\i18n\Formatter |
asPercent() | 値を "%" 記号付きのパーセント数値としてフォーマットします。 | yii\i18n\Formatter |
asRaw() | 値をフォーマットせずにそのままフォーマットします。 | yii\i18n\Formatter |
asRelativeTime() | 値を、日付と現在時刻の間の時間間隔を人間が読める形式でフォーマットします。 | yii\i18n\Formatter |
asScientific() | 値を科学的な数値としてフォーマットします。 | yii\i18n\Formatter |
asShortLength() | 値を人間が読める形式の長さ(例:12 m )としてフォーマットします。 |
yii\i18n\Formatter |
asShortSize() | バイト単位の値を、人間が読める形式のサイズ(例:12 kB )としてフォーマットします。 |
yii\i18n\Formatter |
asShortWeight() | 値を人間が読める形式の重量(例:12 kg )としてフォーマットします。 |
yii\i18n\Formatter |
asSize() | バイト単位の値を、人間が読める形式のサイズ(例:12 キロバイト )としてフォーマットします。 |
yii\i18n\Formatter |
asSpellout() | 値を数値のスペルアウトとしてフォーマットします。 | yii\i18n\Formatter |
asText() | 値を HTML エンコードされたプレーンテキストとしてフォーマットします。 | yii\i18n\Formatter |
asTime() | 値を時間としてフォーマットします。 | yii\i18n\Formatter |
asTimestamp() | 日付、時刻、または日時を、UNIXタイムスタンプ(1970年1月1日からの秒数)として浮動小数点数でフォーマットします。 | yii\i18n\Formatter |
asUrl() | 値をハイパーリンクとしてフォーマットします。 | yii\i18n\Formatter |
asWeight() | 値を人間が読める形式の重量(例:12 キログラム )としてフォーマットします。 |
yii\i18n\Formatter |
attachBehavior() | このコンポーネントにビヘイビアをアタッチします。 | yii\base\Component |
attachBehaviors() | コンポーネントにビヘイビアのリストをアタッチします。 | yii\base\Component |
behaviors() | このコンポーネントが振る舞うべきビヘイビアのリストを返します。 | yii\base\Component |
canGetProperty() | プロパティを読み取ることができるかどうかを示す値を返します。 | yii\base\Component |
canSetProperty() | プロパティを設定できるかどうかを示す値を返します。 | yii\base\Component |
className() | このクラスの完全修飾名を返します。 | yii\base\BaseObject |
detachBehavior() | コンポーネントからビヘイビアをデタッチします。 | yii\base\Component |
detachBehaviors() | コンポーネントからすべてのビヘイビアをデタッチします。 | yii\base\Component |
ensureBehaviors() | behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 | yii\base\Component |
format() | 指定されたフォーマットタイプに基づいて値をフォーマットします。 | yii\i18n\Formatter |
getBehavior() | 名前付きのビヘイビアオブジェクトを返します。 | yii\base\Component |
getBehaviors() | このコンポーネントにアタッチされたすべてのビヘイビアを返します。 | yii\base\Component |
hasEventHandlers() | 名前付きイベントにアタッチされたハンドラがあるかどうかを示す値を返します。 | yii\base\Component |
hasMethod() | メソッドが定義されているかどうかを示す値を返します。 | yii\base\Component |
hasProperty() | このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 | yii\base\Component |
init() | オブジェクトを初期化します。 | yii\i18n\Formatter |
off() | このコンポーネントから既存のイベントハンドラをデタッチします。 | yii\base\Component |
on() | イベントハンドラをイベントにアタッチします。 | yii\base\Component |
trigger() | イベントをトリガーします。 | yii\base\Component |
保護されたメソッド
メソッド | 説明 | 定義元 |
---|---|---|
asCurrencyStringFallback() | 値を通貨数値としてフォーマットするためのフォールバック。 | yii\i18n\Formatter |
asDecimalStringFallback() | 値を10進数としてフォーマットするためのフォールバック。 | yii\i18n\Formatter |
asIntegerStringFallback() | 値を丸めずに小数点以下を削除して整数としてフォーマットするためのフォールバック。 | yii\i18n\Formatter |
asPercentStringFallback() | 値を "%" 記号付きのパーセント数値としてフォーマットするためのフォールバック。 | yii\i18n\Formatter |
createNumberFormatter() | 指定された型とフォーマットに基づいて数値フォーマッタを作成します。 | yii\i18n\Formatter |
formatNumber() | バイト単位の値を指定して、人間が読める形式の数値部分をフォーマットします。 | yii\i18n\Formatter |
isNormalizedValueMispresented() | 指定された値とその正規化されたバージョンの文字列表現が異なるかどうかを確認します。 | yii\i18n\Formatter |
normalizeDatetimeValue() | さまざまな日付/時刻フォーマットメソッドで受け入れられる DateTime オブジェクトとして、指定された日時値を正規化します。 | yii\i18n\Formatter |
normalizeNumericStringValue() | 数値文字列値を正規化します。 | yii\i18n\Formatter |
normalizeNumericValue() | 数値入力値を正規化します。 | yii\i18n\Formatter |
定数
定数 | 値 | 説明 | 定義元 |
---|---|---|---|
FORMAT_WIDTH_LONG | 'long' | yii\i18n\Formatter | |
FORMAT_WIDTH_SHORT | 'short' | yii\i18n\Formatter | |
UNIT_LENGTH | 'length' | yii\i18n\Formatter | |
UNIT_SYSTEM_IMPERIAL | 'imperial' | yii\i18n\Formatter | |
UNIT_SYSTEM_METRIC | 'metric' | yii\i18n\Formatter | |
UNIT_WEIGHT | 'mass' | yii\i18n\Formatter |
プロパティの詳細
$measureUnits からの最小単位の乗数として使用される基本単位。
self::UNIT_LENGTH => [
self::UNIT_SYSTEM_IMPERIAL => 12,
self::UNIT_SYSTEM_METRIC => 1000,
],
self::UNIT_WEIGHT => [
self::UNIT_SYSTEM_IMPERIAL => 7000,
self::UNIT_SYSTEM_METRIC => 1000,
],
]
ブール値をフォーマットする際に表示されるテキスト。最初の要素は false
の場合に表示されるテキストに対応し、2番目の要素は true
に対応します。デフォルトは ['No', 'Yes']
であり、Yes
と No
は $locale に従って翻訳されます。
日付のフォーマットに使用されるカレンダー。このプロパティの値は、IntlDateFormatter
クラスのコンストラクタに直接渡されます。
デフォルトは null
であり、グレゴリオ暦が使用されることを意味します。グレゴリオ暦には定数 \IntlDateFormatter::GREGORIAN
を明示的に渡すこともできます。
例えばジャラリ暦のような別のカレンダーを使用するには、このプロパティを\IntlDateFormatter::TRADITIONAL
に設定します。その場合、カレンダーは$localeで指定する必要があります。例えば、ペルシャ暦の場合、フォーマッタの設定は次のようになります。
'formatter' => [
'locale' => 'fa_IR@calendar=persian',
'calendar' => \IntlDateFormatter::TRADITIONAL,
],
使用可能なカレンダー名は、ICUマニュアルに記載されています。
PHP 5.5以降では、IntlCalendarクラスのインスタンスを使用することもできます。詳細については、PHPマニュアルを参照してください。
PHP intl拡張機能が利用できない場合、このプロパティを設定しても効果はありません。
参照
asCurrency()で使用するデフォルトの通貨を示す3文字のISO 4217通貨コード。設定されていない場合、$localeに対応する通貨コードが使用されます。この場合、$localeは国コード(例:en-US
)を指定する必要があることに注意してください。そうしないと、デフォルトの通貨を決定できません。
通貨をフォーマットする際に小数点として表示される文字。設定されていない場合、$localeに対応する通貨の小数点記号が使用されます。PHP intl拡張機能が利用できない場合、このプロパティを設定しても効果はありません。
日時をフォーマットするために使用されるデフォルトのフォーマット文字列。これは、異なる長さのプリセットフォーマットを表す "short"、"medium"、"long"、または "full" にすることができます。
また、ICUマニュアルで指定されているカスタムフォーマットにすることもできます。
または、PHPのdate()関数で認識できるフォーマットを表す、php:
という接頭辞が付いた文字列にすることもできます。
例:
'MM/dd/yyyy HH:mm:ss' // date and time in ICU format
'php:m/d/Y H:i:s' // the same date and time in PHP format
数値をフォーマットする際に小数点として表示される文字。設定されていない場合、$localeに対応する小数点記号が使用されます。PHP intl拡張機能が利用できない場合、デフォルト値は'.'です。
タイムゾーンが明示的に含まれていない場合に入力値に想定されるタイムゾーン。
値は、UTC
、Europe/Berlin
、America/Chicago
などの有効なタイムゾーン識別子である必要があります。使用可能なタイムゾーンについては、phpマニュアルを参照してください。
デフォルトはUTC
なので、データベースに別のタイムゾーンで日時値を保存する場合にのみ、この値を調整する必要があります。
UNIXタイムスタンプは定義上常にUTCであることに注意してください。つまり、UTCとは異なるデフォルトのタイムゾーンを指定しても、UNIXタイムスタンプとして指定された日付の値には影響しません。
内部メッセージを翻訳するために使用される言語コード(例:en-US
、en
)。設定されていない場合、$localeが使用されます(@calendar
パラメーターが含まれている場合は除きます)。
日付と数値のフォーマットをローカライズするために使用されるロケールID。数値および日付のフォーマットの場合、これはPHP intl拡張機能がインストールされている場合にのみ有効です。設定されていない場合、yii\base\Application::$languageが使用されます。
重量と長さの測定単位の設定。この配列には最も使用可能な測定単位が含まれていますが、特別な要件がある場合は変更できます。
例えば、より小さい測定単位を追加できます。
$this->measureUnits[self::UNIT_LENGTH][self::UNIT_SYSTEM_METRIC] = [
'nanometer' => 0.000001
]
参照
self::UNIT_LENGTH => [
self::UNIT_SYSTEM_IMPERIAL => [
'inch' => 1,
'foot' => 12,
'yard' => 36,
'chain' => 792,
'furlong' => 7920,
'mile' => 63360,
],
self::UNIT_SYSTEM_METRIC => [
'millimeter' => 1,
'centimeter' => 10,
'meter' => 1000,
'kilometer' => 1000000,
],
],
self::UNIT_WEIGHT => [
self::UNIT_SYSTEM_IMPERIAL => [
'grain' => 1,
'drachm' => 27.34375,
'ounce' => 437.5,
'pound' => 7000,
'stone' => 98000,
'quarter' => 196000,
'hundredweight' => 784000,
'ton' => 15680000,
],
self::UNIT_SYSTEM_METRIC => [
'gram' => 1,
'kilogram' => 1000,
'ton' => 1000000,
],
],
]
null
値をフォーマットする際に表示されるテキストです。デフォルトは'<span class="not-set">(not set)</span>'
で、(not set)
は$localeに従って翻訳されます。
createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setAttribute()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。
可能なオプションについては、PHPマニュアルを参照してください。
例えば、小数点以下の桁数の最大値と最小値を調整するには、このプロパティを次のように構成できます。
[
NumberFormatter::MIN_FRACTION_DIGITS => 0,
NumberFormatter::MAX_FRACTION_DIGITS => 2,
]
createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setSymbol()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。
可能なオプションについては、PHPマニュアルを参照してください。
例えば、ロシア・ルーブルのруб.
の代わりにU+20BDのようなカスタム通貨記号を選択する場合
[
NumberFormatter::CURRENCY_SYMBOL => '₽',
]
createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setTextAttribute()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。
可能なオプションについては、PHPマニュアルを参照してください。
例えば、負の数のマイナス記号を変更するには、このプロパティを次のように構成できます。
[
NumberFormatter::NEGATIVE_PREFIX => 'MINUS',
]
asSize()とasShortSize()で使用される、キロバイトの計算基準(1キロバイトあたり1000バイトまたは1024バイト)。デフォルトは1024です。
測定単位のデフォルトのシステム。デフォルトはUNIT_SYSTEM_METRICです。可能な値
参照
数値をフォーマットする際に、桁区切り文字(グループ化区切り文字とも呼ばれます)として表示される文字。設定されていない場合、$locale に対応する桁区切り文字が使用されます。PHP intl 拡張機能が利用できない場合、デフォルト値は ',' です。
時間と日付の値をフォーマットするために使用するタイムゾーン。
これは、date_default_timezone_set() に渡すことができる任意の値(例:UTC
、Europe/Berlin
、または America/Chicago
)です。利用可能なタイムゾーンについては、php マニュアルを参照してください。このプロパティが設定されていない場合は、yii\base\Application::$timeZone が使用されます。
入力データにおけるデフォルトのタイムゾーンは、入力された日付の値にタイムゾーンが含まれていない場合、デフォルトで UTC とみなされることに注意してください。データベースに別のタイムゾーンでデータを保存する場合は、それに応じて$defaultTimeZoneを調整する必要があります。
メソッドの詳細
定義元: yii\base\Component::__call()
クラスメソッドではない名前付きメソッドを呼び出します。
このメソッドは、添付されたビヘイビアに名前付きメソッドがあるかどうかを確認し、存在する場合はそれを実行します。
このメソッドは、未知のメソッドが呼び出されるときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。
public mixed __call ( $name, $params ) | ||
$name | 文字列 |
メソッド名 |
$params | 配列 |
メソッドのパラメータ |
return | mixed |
メソッドの戻り値 |
---|---|---|
throws | yii\base\UnknownMethodException |
未知のメソッドを呼び出す場合 |
public function __call($name, $params)
{
$this->ensureBehaviors();
foreach ($this->_behaviors as $object) {
if ($object->hasMethod($name)) {
return call_user_func_array([$object, $name], $params);
}
}
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
定義元: yii\base\Component::__clone()
このメソッドは、既存のオブジェクトをクローンしてオブジェクトが作成された後に呼び出されます。
古いオブジェクトに添付されているため、すべてのビヘイビアを削除します。
public void __clone ( ) |
public function __clone()
{
$this->_events = [];
$this->_eventWildcards = [];
$this->_behaviors = null;
}
定義元: yii\base\BaseObject::__construct()
コンストラクタ。
デフォルトの実装では、次の2つの処理を行います。
- 指定された構成
$config
でオブジェクトを初期化します。 - init() を呼び出します。
このメソッドが子クラスでオーバーライドされている場合は、次のようにすることをお勧めします。
- コンストラクタの最後のパラメータが、ここでの
$config
のような構成配列であること。 - コンストラクタの最後に親の実装を呼び出すこと。
public void __construct ( $config = [] ) | ||
$config | 配列 |
オブジェクトのプロパティを初期化するために使用される名前と値のペア |
public function __construct($config = [])
{
if (!empty($config)) {
Yii::configure($this, $config);
}
$this->init();
}
定義元: yii\base\Component::__get()
コンポーネントプロパティの値を返します。
このメソッドは、次の順序で確認し、それに応じて動作します。
- ゲッターで定義されたプロパティ:ゲッターの結果を返します
- ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します
このメソッドは、$value = $component->property;
を実行したときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。
__set()も参照してください。
public mixed __get ( $name ) | ||
$name | 文字列 |
プロパティ名 |
return | mixed |
プロパティ値またはビヘイビアのプロパティの値 |
---|---|---|
throws | yii\base\UnknownPropertyException |
プロパティが定義されていない場合 |
throws | yii\base\InvalidCallException |
プロパティが書き込み専用の場合。 |
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
// read property, e.g. getName()
return $this->$getter();
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name)) {
return $behavior->$name;
}
}
if (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
定義元: yii\base\Component::__isset()
プロパティが設定されているか(定義されていて、nullではないか)を確認します。
このメソッドは、次の順序で確認し、それに応じて動作します。
- セッターで定義されたプロパティ:プロパティが設定されているかどうかを返します
- ビヘイビアのプロパティ:プロパティが設定されているかどうかを返します
- 存在しないプロパティの場合は
false
を返します
このメソッドは、isset($component->property)
を実行したときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。
public boolean __isset ( $name ) | ||
$name | 文字列 |
プロパティ名またはイベント名 |
return | boolean |
指定されたプロパティが設定されているかどうか |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name)) {
return $behavior->$name !== null;
}
}
return false;
}
定義元: yii\base\Component::__set()
コンポーネントプロパティの値を設定します。
このメソッドは、次の順序で確認し、それに応じて動作します。
- セッターで定義されたプロパティ:プロパティ値を設定します
- "on xyz" 形式のイベント:ハンドラーをイベント "xyz" に添付します
- "as xyz" 形式のビヘイビア: "xyz" という名前のビヘイビアを添付します
- ビヘイビアのプロパティ:ビヘイビアのプロパティ値を設定します
このメソッドは、$component->property = $value;
を実行したときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。
__get()も参照してください。
public void __set ( $name, $value ) | ||
$name | 文字列 |
プロパティ名またはイベント名 |
$value | mixed |
プロパティ値 |
throws | yii\base\UnknownPropertyException |
プロパティが定義されていない場合 |
---|---|---|
throws | yii\base\InvalidCallException |
プロパティが読み取り専用の場合。 |
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
// set property
$this->$setter($value);
return;
} elseif (strncmp($name, 'on ', 3) === 0) {
// on event: attach event handler
$this->on(trim(substr($name, 3)), $value);
return;
} elseif (strncmp($name, 'as ', 3) === 0) {
// as behavior: attach behavior
$name = trim(substr($name, 3));
$this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
return;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name)) {
$behavior->$name = $value;
return;
}
}
if (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
}
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
定義元: yii\base\Component::__unset()
コンポーネントプロパティを null に設定します。
このメソッドは、次の順序で確認し、それに応じて動作します。
- セッターによって定義されたプロパティ: プロパティ値を null に設定します。
- ビヘイビアのプロパティ: プロパティ値を null に設定します。
このメソッドは、unset($component->property)
を実行したときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
public void __unset ( $name ) | ||
$name | 文字列 |
プロパティ名 |
throws | yii\base\InvalidCallException |
プロパティが読み取り専用の場合。 |
---|
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter(null);
return;
}
// behavior property
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name)) {
$behavior->$name = null;
return;
}
}
throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}
値をブール値としてフォーマットします。
参考: $booleanFormat。
public string asBoolean ( $value ) | ||
$value | mixed |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asBoolean($value)
{
if ($value === null) {
return $this->nullDisplay;
}
return $value ? $this->booleanFormat[1] : $this->booleanFormat[0];
}
値を通貨数値としてフォーマットします。
この関数は、動作するためにPHP intl拡張機能をインストールする必要はありませんが、良好なフォーマット結果を得るためにインストールすることを強くお勧めします。
2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。
public string asCurrency ( $value, $currency = null, $options = [], $textOptions = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$currency | 文字列|null |
使用する通貨を示す3文字のISO 4217通貨コード。nullの場合、$currencyCodeが使用されます。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
通貨が指定されておらず、$currencyCodeが定義されていない場合。 |
public function asCurrency($value, $currency = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$normalizedValue = $this->normalizeNumericValue($value);
if ($this->isNormalizedValueMispresented($value, $normalizedValue)) {
return $this->asCurrencyStringFallback((string) $value, $currency);
}
if ($this->_intlLoaded) {
$currency = $currency ?: $this->currencyCode;
// currency code must be set before fraction digits
// https://www.php.net/manual/en/numberformatter.formatcurrency.php#114376
if ($currency && !isset($textOptions[NumberFormatter::CURRENCY_CODE])) {
$textOptions[NumberFormatter::CURRENCY_CODE] = $currency;
}
$formatter = $this->createNumberFormatter(NumberFormatter::CURRENCY, null, $options, $textOptions);
if ($currency === null) {
$result = $formatter->format($normalizedValue);
} else {
$result = $formatter->formatCurrency($normalizedValue, $currency);
}
if ($result === false) {
throw new InvalidArgumentException('Formatting currency value failed: ' . $formatter->getErrorCode() . ' ' . $formatter->getErrorMessage());
}
return $result;
}
if ($currency === null) {
if ($this->currencyCode === null) {
throw new InvalidConfigException('The default currency code for the formatter is not defined and the php intl extension is not installed which could take the default currency from the locale.');
}
$currency = $this->currencyCode;
}
return $currency . ' ' . $this->asDecimal($normalizedValue, 2, $options, $textOptions);
}
値を通貨数値としてフォーマットするためのフォールバック。
protected string asCurrencyStringFallback ( $value, $currency = null ) | ||
$value | string|integer|float |
フォーマットされる値。 |
$currency | 文字列|null |
使用する通貨を示す3文字のISO 4217通貨コード。nullの場合、$currencyCodeが使用されます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidConfigException |
通貨が指定されておらず、$currencyCodeが定義されていない場合。 |
protected function asCurrencyStringFallback($value, $currency = null)
{
if ($currency === null) {
if ($this->currencyCode === null) {
throw new InvalidConfigException('The default currency code for the formatter is not defined.');
}
$currency = $this->currencyCode;
}
return $currency . ' ' . $this->asDecimalStringFallback($value, 2);
}
値を日付としてフォーマットします。
参考: $dateFormat。
public string asDate ( $value, $format = null ) | ||
$value | integer|string|DateTime|DateTimeInterface|null |
フォーマットされる値。次の型の値がサポートされています
フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZoneと$timeZoneを同じ値に設定する必要があります。また、 |
$format | 文字列|null |
値を日付文字列に変換するために使用されるフォーマット。nullの場合、$dateFormatが使用されます。 これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。 または、これは、PHPのdate()関数で認識できる形式を表す |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値を日付値として評価できない場合。 |
throws | yii\base\InvalidConfigException |
日付形式が無効な場合。 |
public function asDate($value, $format = null)
{
if ($format === null) {
$format = $this->dateFormat;
}
return $this->formatDateTimeValue($value, $format, 'date');
}
値を日時としてフォーマットします。
参考: $datetimeFormat。
public string asDatetime ( $value, $format = null ) | ||
$value | integer|string|DateTime|DateTimeInterface|null |
フォーマットされる値。次の型の値がサポートされています
フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZoneと$timeZoneを同じ値に設定する必要があります。 |
$format | 文字列|null |
値を日付文字列に変換するために使用されるフォーマット。nullの場合、$datetimeFormatが使用されます。 これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。 または、これは、PHPのdate()関数で認識できる形式を表す |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値を日付値として評価できない場合。 |
throws | yii\base\InvalidConfigException |
日付形式が無効な場合。 |
public function asDatetime($value, $format = null)
{
if ($format === null) {
$format = $this->datetimeFormat;
}
return $this->formatDateTimeValue($value, $format, 'datetime');
}
値を10進数としてフォーマットします。
プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。
2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。
参照
public string asDecimal ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$decimals | integer|null |
小数点以下の桁数。指定しない場合、桁数は入力値によって異なり、$numberFormatterOptionsを使用して構成できる |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asDecimal($value, $decimals = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$normalizedValue = $this->normalizeNumericValue($value);
if ($this->isNormalizedValueMispresented($value, $normalizedValue)) {
return $this->asDecimalStringFallback((string) $value, $decimals);
}
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::DECIMAL, $decimals, $options, $textOptions);
if (($result = $f->format($normalizedValue)) === false) {
throw new InvalidArgumentException('Formatting decimal value failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
if ($decimals === null) {
$decimals = 2;
}
return number_format($normalizedValue, $decimals, $this->decimalSeparator, $this->thousandSeparator);
}
値を10進数としてフォーマットするためのフォールバック。
プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。
参照
protected string asDecimalStringFallback ( $value, $decimals = 2 ) | ||
$value | string|integer|float |
フォーマットされる値。 |
$decimals | integer|null |
小数点以下の桁数。デフォルト値は |
return | 文字列 |
フォーマットされた結果。 |
---|
protected function asDecimalStringFallback($value, $decimals = 2)
{
if (empty($value)) {
$value = 0;
}
$value = $this->normalizeNumericStringValue((string) $value);
$separatorPosition = strrpos($value, '.');
if ($separatorPosition !== false) {
$integerPart = substr($value, 0, $separatorPosition);
$fractionalPart = substr($value, $separatorPosition + 1);
} else {
$integerPart = $value;
$fractionalPart = null;
}
$decimalOutput = '';
if ($decimals === null) {
$decimals = 2;
}
$carry = 0;
if ($decimals > 0) {
$decimalSeparator = $this->decimalSeparator;
if ($this->decimalSeparator === null) {
$decimalSeparator = '.';
}
if ($fractionalPart === null) {
$fractionalPart = str_repeat('0', $decimals);
} elseif (strlen($fractionalPart) > $decimals) {
$cursor = $decimals;
// checking if fractional part must be rounded
if ((int) substr($fractionalPart, $cursor, 1) >= 5) {
while (--$cursor >= 0) {
$carry = 0;
$oneUp = (int) substr($fractionalPart, $cursor, 1) + 1;
if ($oneUp === 10) {
$oneUp = 0;
$carry = 1;
}
$fractionalPart = substr($fractionalPart, 0, $cursor) . $oneUp . substr($fractionalPart, $cursor + 1);
if ($carry === 0) {
break;
}
}
}
$fractionalPart = substr($fractionalPart, 0, $decimals);
} elseif (strlen($fractionalPart) < $decimals) {
$fractionalPart = str_pad($fractionalPart, $decimals, '0');
}
$decimalOutput .= $decimalSeparator . $fractionalPart;
}
// checking if integer part must be rounded
if ($carry || ($decimals === 0 && $fractionalPart !== null && (int) substr($fractionalPart, 0, 1) >= 5)) {
$integerPartLength = strlen($integerPart);
$cursor = 0;
while (++$cursor <= $integerPartLength) {
$carry = 0;
$oneUp = (int) substr($integerPart, -$cursor, 1) + 1;
if ($oneUp === 10) {
$oneUp = 0;
$carry = 1;
}
$integerPart = substr($integerPart, 0, -$cursor) . $oneUp . substr($integerPart, $integerPartLength - $cursor + 1);
if ($carry === 0) {
break;
}
}
if ($carry === 1) {
$integerPart = '1' . $integerPart;
}
}
if (strlen($integerPart) > 3) {
$thousandSeparator = $this->thousandSeparator;
if ($thousandSeparator === null) {
$thousandSeparator = ',';
}
$integerPart = strrev(implode(',', str_split(strrev($integerPart), 3)));
if ($thousandSeparator !== ',') {
$integerPart = str_replace(',', $thousandSeparator, $integerPart);
}
}
return $integerPart . $decimalOutput;
}
値を人間が読める形式の期間として表します。
public string asDuration ( $value, $implodeString = ', ', $negativeSign = '-' ) | ||
$value | DateInterval|string|integer|null |
フォーマットする値。許容される形式
|
$implodeString | 文字列 |
期間の各部分を連結するために使用されます。デフォルトは |
$negativeSign | 文字列 |
フォーマットされた期間が負の場合、先頭に付加されます。デフォルトは |
return | 文字列 |
フォーマットされた期間。 |
---|
public function asDuration($value, $implodeString = ', ', $negativeSign = '-')
{
if ($value === null) {
return $this->nullDisplay;
}
if ($value instanceof DateInterval) {
$isNegative = $value->invert;
$interval = $value;
} elseif (is_numeric($value)) {
$isNegative = $value < 0;
$zeroDateTime = (new DateTime())->setTimestamp(0);
$valueDateTime = (new DateTime())->setTimestamp(abs($value));
$interval = $valueDateTime->diff($zeroDateTime);
} elseif (strncmp($value, 'P-', 2) === 0) {
$interval = new DateInterval('P' . substr($value, 2));
$isNegative = true;
} else {
$interval = new DateInterval($value);
$isNegative = $interval->invert;
}
$parts = [];
if ($interval->y > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 year} other{# years}}', ['delta' => $interval->y], $this->language);
}
if ($interval->m > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 month} other{# months}}', ['delta' => $interval->m], $this->language);
}
if ($interval->d > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 day} other{# days}}', ['delta' => $interval->d], $this->language);
}
if ($interval->h > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 hour} other{# hours}}', ['delta' => $interval->h], $this->language);
}
if ($interval->i > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 minute} other{# minutes}}', ['delta' => $interval->i], $this->language);
}
if ($interval->s > 0) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 second} other{# seconds}}', ['delta' => $interval->s], $this->language);
}
if ($interval->s === 0 && empty($parts)) {
$parts[] = Yii::t('yii', '{delta, plural, =1{1 second} other{# seconds}}', ['delta' => $interval->s], $this->language);
$isNegative = false;
}
return empty($parts) ? $this->nullDisplay : (($isNegative ? $negativeSign : '') . implode($implodeString, $parts));
}
値を mailto リンクとしてフォーマットします。
public string asEmail ( $value, $options = [] ) | ||
$value | 文字列|null |
フォーマットされる値。 |
$options | 配列 |
名前と値のペア形式のタグオプション。yii\helpers\Html::mailto()を参照してください。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asEmail($value, $options = [])
{
if ($value === null) {
return $this->nullDisplay;
}
return Html::mailto(Html::encode($value), $value, $options);
}
値を HTML テキストとしてフォーマットします。
XSS攻撃を回避するために、値はyii\helpers\HtmlPurifierを使用して浄化されます。値の浄化を行わない場合は、asRaw()を使用してください。
public string asHtml ( $value, $config = null ) | ||
$value | 文字列|null |
フォーマットされる値。 |
$config | array|null |
HTMLPurifierクラスの設定。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asHtml($value, $config = null)
{
if ($value === null) {
return $this->nullDisplay;
}
return HtmlPurifier::process($value, $config);
}
値をイメージタグとしてフォーマットします。
public string asImage ( $value, $options = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$options | 配列 |
名前と値のペア形式のタグオプション。yii\helpers\Html::img()を参照してください。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asImage($value, $options = [])
{
if ($value === null) {
return $this->nullDisplay;
}
return Html::img($value, $options);
}
値を丸めずに小数点以下を削除して整数としてフォーマットします。
2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。
public string asInteger ( $value, $options = [], $textOptions = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asInteger($value, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$normalizedValue = $this->normalizeNumericValue($value);
if ($this->isNormalizedValueMispresented($value, $normalizedValue)) {
return $this->asIntegerStringFallback((string) $value);
}
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::DECIMAL, null, $options, $textOptions);
$f->setAttribute(NumberFormatter::FRACTION_DIGITS, 0);
if (($result = $f->format($normalizedValue, NumberFormatter::TYPE_INT64)) === false) {
throw new InvalidArgumentException('Formatting integer value failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
return number_format((int) $normalizedValue, 0, $this->decimalSeparator, $this->thousandSeparator);
}
値を丸めずに小数点以下を削除して整数としてフォーマットするためのフォールバック。
protected string asIntegerStringFallback ( $value ) | ||
$value | string|integer|float |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
protected function asIntegerStringFallback($value)
{
if (empty($value)) {
$value = 0;
}
$value = $this->normalizeNumericStringValue((string) $value);
$separatorPosition = strrpos($value, '.');
if ($separatorPosition !== false) {
$integerPart = substr($value, 0, $separatorPosition);
} else {
$integerPart = $value;
}
return $this->asDecimalStringFallback($integerPart, 0);
}
値を人間が読める形式の長さ(例:12 メートル
)としてフォーマットします。
最小単位の倍数として値の単位を変更する必要がある場合は、プロパティ$baseUnitsを確認し、UNIT_SYSTEM_METRICまたはUNIT_SYSTEM_IMPERIALを切り替えるには、$systemOfUnitsを確認してください。
asLength()も参照してください。
public string asLength ( $value, $decimals = null, $numberOptions = [], $textOptions = [] ) | ||
$value | float|integer |
フォーマットする値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$numberOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
INTLがインストールされていないか、必要な情報が含まれていない場合。 |
public function asLength($value, $decimals = null, $numberOptions = [], $textOptions = [])
{
return $this->formatUnit(self::UNIT_LENGTH, self::FORMAT_WIDTH_LONG, $value, $decimals, $numberOptions, $textOptions);
}
改行が改行に変換された HTML エンコードされたプレーンテキストとして値をフォーマットします。
public string asNtext ( $value ) | ||
$value | 文字列|null |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asNtext($value)
{
if ($value === null) {
return $this->nullDisplay;
}
return nl2br(Html::encode($value));
}
public string asOrdinal ( $value ) | ||
$value | mixed |
フォーマットする値 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
PHP intl 拡張機能が利用できない場合。 |
public function asOrdinal($value)
{
if ($value === null) {
return $this->nullDisplay;
}
$value = $this->normalizeNumericValue($value);
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::ORDINAL);
if (($result = $f->format($value)) === false) {
throw new InvalidArgumentException('Formatting number as ordinal failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
throw new InvalidConfigException('Format as Ordinal is only supported when PHP intl extension is installed.');
}
値を HTML エンコードされたテキスト段落としてフォーマットします。
各テキスト段落は<p>
タグで囲まれています。1つまたは複数の連続する空行が2つの段落を分割します。
public string asParagraphs ( $value ) | ||
$value | 文字列|null |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asParagraphs($value)
{
if ($value === null) {
return $this->nullDisplay;
}
return str_replace('<p></p>', '', '<p>' . preg_replace('/\R{2,}/u', "</p>\n<p>", Html::encode($value)) . '</p>');
}
値を "%" 記号付きのパーセント数値としてフォーマットします。
2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。
public string asPercent ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | mixed |
フォーマットする値。 |
$decimals | integer|null |
小数点以下の桁数。指定がない場合、桁数は入力値に依存し、 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asPercent($value, $decimals = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$normalizedValue = $this->normalizeNumericValue($value);
if ($this->isNormalizedValueMispresented($value, $normalizedValue)) {
return $this->asPercentStringFallback((string) $value, $decimals);
}
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::PERCENT, $decimals, $options, $textOptions);
if (($result = $f->format($normalizedValue)) === false) {
throw new InvalidArgumentException('Formatting percent value failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
if ($decimals === null) {
$decimals = 0;
}
$normalizedValue *= 100;
return number_format($normalizedValue, $decimals, $this->decimalSeparator, $this->thousandSeparator) . '%';
}
値を "%" 記号付きのパーセント数値としてフォーマットするためのフォールバック。
プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。
protected string asPercentStringFallback ( $value, $decimals = null ) | ||
$value | string|integer|float |
フォーマットされる値。 |
$decimals | integer|null |
小数点以下の桁数。デフォルト値は |
return | 文字列 |
フォーマットされた結果。 |
---|
protected function asPercentStringFallback($value, $decimals = null)
{
if (empty($value)) {
$value = 0;
}
if ($decimals === null) {
$decimals = 0;
}
$value = $this->normalizeNumericStringValue((string) $value);
$separatorPosition = strrpos($value, '.');
if ($separatorPosition !== false) {
$integerPart = substr($value, 0, $separatorPosition);
$fractionalPart = str_pad(substr($value, $separatorPosition + 1), 2, '0');
$integerPart .= substr($fractionalPart, 0, 2);
$fractionalPart = substr($fractionalPart, 2);
if ($fractionalPart === '') {
$multipliedValue = $integerPart;
} else {
$multipliedValue = $integerPart . '.' . $fractionalPart;
}
} else {
$multipliedValue = $value . '00';
}
return $this->asDecimalStringFallback($multipliedValue, $decimals) . '%';
}
値をフォーマットせずにそのままフォーマットします。
このメソッドは、パラメータをそのまま返します。唯一の例外はnull
値で、これは$nullDisplayを使用してフォーマットされます。
public string asRaw ( $value ) | ||
$value | mixed |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asRaw($value)
{
if ($value === null) {
return $this->nullDisplay;
}
return $value;
}
値を、日付と現在時刻の間の時間間隔を人間が読める形式でフォーマットします。
このメソッドは3つの異なる方法で使用できます。
now
を基準としたタイムスタンプを使用する。$referenceTime
を基準としたタイムスタンプを使用する。DateInterval
オブジェクトを使用する。
public string asRelativeTime ( $value, $referenceTime = null ) | ||
$value | integer|string|DateTime|DateTimeInterface|DateInterval|null |
フォーマットされる値。次の型の値がサポートされています
|
$referenceTime | integer|string|DateTime|DateTimeInterface|null |
|
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値を日付値として評価できない場合。 |
public function asRelativeTime($value, $referenceTime = null)
{
if ($value === null) {
return $this->nullDisplay;
}
if ($value instanceof DateInterval) {
$interval = $value;
} else {
$timestamp = $this->normalizeDatetimeValue($value);
$timeZone = new DateTimeZone($this->timeZone);
if ($referenceTime === null) {
$dateNow = new DateTime('now', $timeZone);
} else {
$dateNow = $this->normalizeDatetimeValue($referenceTime);
$dateNow->setTimezone($timeZone);
}
$dateThen = $timestamp->setTimezone($timeZone);
$interval = $dateThen->diff($dateNow);
}
if ($interval->invert) {
if ($interval->y >= 1) {
return Yii::t('yii', 'in {delta, plural, =1{a year} other{# years}}', ['delta' => $interval->y], $this->language);
}
if ($interval->m >= 1) {
return Yii::t('yii', 'in {delta, plural, =1{a month} other{# months}}', ['delta' => $interval->m], $this->language);
}
if ($interval->d >= 1) {
return Yii::t('yii', 'in {delta, plural, =1{a day} other{# days}}', ['delta' => $interval->d], $this->language);
}
if ($interval->h >= 1) {
return Yii::t('yii', 'in {delta, plural, =1{an hour} other{# hours}}', ['delta' => $interval->h], $this->language);
}
if ($interval->i >= 1) {
return Yii::t('yii', 'in {delta, plural, =1{a minute} other{# minutes}}', ['delta' => $interval->i], $this->language);
}
if ($interval->s == 0) {
return Yii::t('yii', 'just now', [], $this->language);
}
return Yii::t('yii', 'in {delta, plural, =1{a second} other{# seconds}}', ['delta' => $interval->s], $this->language);
}
if ($interval->y >= 1) {
return Yii::t('yii', '{delta, plural, =1{a year} other{# years}} ago', ['delta' => $interval->y], $this->language);
}
if ($interval->m >= 1) {
return Yii::t('yii', '{delta, plural, =1{a month} other{# months}} ago', ['delta' => $interval->m], $this->language);
}
if ($interval->d >= 1) {
return Yii::t('yii', '{delta, plural, =1{a day} other{# days}} ago', ['delta' => $interval->d], $this->language);
}
if ($interval->h >= 1) {
return Yii::t('yii', '{delta, plural, =1{an hour} other{# hours}} ago', ['delta' => $interval->h], $this->language);
}
if ($interval->i >= 1) {
return Yii::t('yii', '{delta, plural, =1{a minute} other{# minutes}} ago', ['delta' => $interval->i], $this->language);
}
if ($interval->s == 0) {
return Yii::t('yii', 'just now', [], $this->language);
}
return Yii::t('yii', '{delta, plural, =1{a second} other{# seconds}} ago', ['delta' => $interval->s], $this->language);
}
値を科学的な数値としてフォーマットします。
public string asScientific ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$decimals | integer|null |
小数点以下の桁数。指定がない場合、桁数は入力値に依存し、 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asScientific($value, $decimals = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$value = $this->normalizeNumericValue($value);
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::SCIENTIFIC, $decimals, $options, $textOptions);
if (($result = $f->format($value)) === false) {
throw new InvalidArgumentException('Formatting scientific number value failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
if ($decimals !== null) {
return sprintf("%.{$decimals}E", $value);
}
return sprintf('%.E', $value);
}
値を人間が読める形式の長さ(例:12 m
)としてフォーマットします。
これはasLength()の短い形式です。
最小単位の倍数として値の単位を変更する必要がある場合は、プロパティ$baseUnitsを確認し、UNIT_SYSTEM_METRICまたはUNIT_SYSTEM_IMPERIALを切り替えるには、$systemOfUnitsを確認してください。
asLength()も参照してください。
public string asShortLength ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | float|integer |
フォーマットする値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
INTLがインストールされていないか、必要な情報が含まれていない場合。 |
public function asShortLength($value, $decimals = null, $options = [], $textOptions = [])
{
return $this->formatUnit(self::UNIT_LENGTH, self::FORMAT_WIDTH_SHORT, $value, $decimals, $options, $textOptions);
}
バイト単位の値を、人間が読める形式のサイズ(例:12 kB
)としてフォーマットします。
これはasSize()の短い形式です。
$sizeFormatBaseが1024の場合、バイナリプレフィックス(例:キビバイト/KiB、メビバイト/MiB、...)がフォーマット結果で使用されます。
参照
public string asShortSize ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | string|integer|float|null |
フォーマットされるバイト単位の値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asShortSize($value, $decimals = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
list($params, $position) = $this->formatNumber($value, $decimals, 4, $this->sizeFormatBase, $options, $textOptions);
if ($this->sizeFormatBase == 1024) {
switch ($position) {
case 0:
return Yii::t('yii', '{nFormatted} B', $params, $this->language);
case 1:
return Yii::t('yii', '{nFormatted} KiB', $params, $this->language);
case 2:
return Yii::t('yii', '{nFormatted} MiB', $params, $this->language);
case 3:
return Yii::t('yii', '{nFormatted} GiB', $params, $this->language);
case 4:
return Yii::t('yii', '{nFormatted} TiB', $params, $this->language);
default:
return Yii::t('yii', '{nFormatted} PiB', $params, $this->language);
}
} else {
switch ($position) {
case 0:
return Yii::t('yii', '{nFormatted} B', $params, $this->language);
case 1:
return Yii::t('yii', '{nFormatted} kB', $params, $this->language);
case 2:
return Yii::t('yii', '{nFormatted} MB', $params, $this->language);
case 3:
return Yii::t('yii', '{nFormatted} GB', $params, $this->language);
case 4:
return Yii::t('yii', '{nFormatted} TB', $params, $this->language);
default:
return Yii::t('yii', '{nFormatted} PB', $params, $this->language);
}
}
}
値を人間が読める形式の重量(例:12 kg
)としてフォーマットします。
これはasWeight()の短い形式です。
最小単位の倍数として値の単位を変更する必要がある場合は、プロパティ$baseUnitsを確認し、UNIT_SYSTEM_METRICまたはUNIT_SYSTEM_IMPERIALを切り替えるには、$systemOfUnitsを確認してください。
public string asShortWeight ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | float|integer |
フォーマットする値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
INTLがインストールされていないか、必要な情報が含まれていない場合。 |
public function asShortWeight($value, $decimals = null, $options = [], $textOptions = [])
{
return $this->formatUnit(self::UNIT_WEIGHT, self::FORMAT_WIDTH_SHORT, $value, $decimals, $options, $textOptions);
}
バイト単位の値を、人間が読める形式のサイズ(例:12 キロバイト
)としてフォーマットします。
$sizeFormatBaseが1024の場合、バイナリプレフィックス(例:キビバイト/KiB、メビバイト/MiB、...)がフォーマット結果で使用されます。
参照
public string asSize ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | string|integer|float|null |
フォーマットされるバイト単位の値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
public function asSize($value, $decimals = null, $options = [], $textOptions = [])
{
if ($value === null) {
return $this->nullDisplay;
}
list($params, $position) = $this->formatNumber($value, $decimals, 4, $this->sizeFormatBase, $options, $textOptions);
if ($this->sizeFormatBase == 1024) {
switch ($position) {
case 0:
return Yii::t('yii', '{nFormatted} {n, plural, =1{byte} other{bytes}}', $params, $this->language);
case 1:
return Yii::t('yii', '{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}', $params, $this->language);
case 2:
return Yii::t('yii', '{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}', $params, $this->language);
case 3:
return Yii::t('yii', '{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}', $params, $this->language);
case 4:
return Yii::t('yii', '{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}', $params, $this->language);
default:
return Yii::t('yii', '{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}', $params, $this->language);
}
} else {
switch ($position) {
case 0:
return Yii::t('yii', '{nFormatted} {n, plural, =1{byte} other{bytes}}', $params, $this->language);
case 1:
return Yii::t('yii', '{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}', $params, $this->language);
case 2:
return Yii::t('yii', '{nFormatted} {n, plural, =1{megabyte} other{megabytes}}', $params, $this->language);
case 3:
return Yii::t('yii', '{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}', $params, $this->language);
case 4:
return Yii::t('yii', '{nFormatted} {n, plural, =1{terabyte} other{terabytes}}', $params, $this->language);
default:
return Yii::t('yii', '{nFormatted} {n, plural, =1{petabyte} other{petabytes}}', $params, $this->language);
}
}
}
public string asSpellout ( $value ) | ||
$value | mixed |
フォーマットする値 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
PHP intl 拡張機能が利用できない場合。 |
public function asSpellout($value)
{
if ($value === null) {
return $this->nullDisplay;
}
$value = $this->normalizeNumericValue($value);
if ($this->_intlLoaded) {
$f = $this->createNumberFormatter(NumberFormatter::SPELLOUT);
if (($result = $f->format($value)) === false) {
throw new InvalidArgumentException('Formatting number as spellout failed: ' . $f->getErrorCode() . ' ' . $f->getErrorMessage());
}
return $result;
}
throw new InvalidConfigException('Format as Spellout is only supported when PHP intl extension is installed.');
}
値を HTML エンコードされたプレーンテキストとしてフォーマットします。
public string asText ( $value ) | ||
$value | 文字列|null |
フォーマットされる値。 |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asText($value)
{
if ($value === null) {
return $this->nullDisplay;
}
return Html::encode($value);
}
値を時間としてフォーマットします。
こちらも参照してください $timeFormat。
public string asTime ( $value, $format = null ) | ||
$value | integer|string|DateTime|DateTimeInterface|null |
フォーマットされる値。次の型の値がサポートされています
フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZoneと$timeZoneを同じ値に設定する必要があります。 |
$format | 文字列|null |
値を日付文字列に変換するために使用されるフォーマット。nullの場合、$timeFormat が使用されます。 これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。 または、これは、PHPのdate()関数で認識できる形式を表す |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値を日付値として評価できない場合。 |
throws | yii\base\InvalidConfigException |
日付形式が無効な場合。 |
public function asTime($value, $format = null)
{
if ($format === null) {
$format = $this->timeFormat;
}
return $this->formatDateTimeValue($value, $format, 'time');
}
日付、時刻、または日時を、UNIXタイムスタンプ(1970年1月1日からの秒数)として浮動小数点数でフォーマットします。
public string asTimestamp ( $value ) | ||
$value | integer|string|DateTime|DateTimeInterface|null |
フォーマットされる値。次の型の値がサポートされています
|
return | 文字列 |
フォーマットされた結果。 |
---|
public function asTimestamp($value)
{
if ($value === null) {
return $this->nullDisplay;
}
$timestamp = $this->normalizeDatetimeValue($value);
return number_format($timestamp->format('U'), 0, '.', '');
}
値をハイパーリンクとしてフォーマットします。
public string asUrl ( $value, $options = [] ) | ||
$value | mixed |
フォーマットされる値。 |
$options | 配列 |
名前と値のペアの形式のタグオプション。yii\helpers\Html::a() を参照してください。2.0.43 以降、特別なオプション |
return | 文字列 |
フォーマットされた結果。 |
---|
public function asUrl($value, $options = [])
{
if ($value === null) {
return $this->nullDisplay;
}
$url = $value;
$scheme = ArrayHelper::remove($options, 'scheme');
if ($scheme === null) {
if (strpos($url, '://') === false) {
$url = 'http://' . $url;
}
} else {
$url = Url::ensureScheme($url, $scheme);
}
return Html::a(Html::encode($value), $url, $options);
}
値を人間が読める形式の重量(例:12 キログラム
)としてフォーマットします。
最小単位の倍数として値の単位を変更する必要がある場合は、プロパティ$baseUnitsを確認し、UNIT_SYSTEM_METRICまたはUNIT_SYSTEM_IMPERIALを切り替えるには、$systemOfUnitsを確認してください。
public string asWeight ( $value, $decimals = null, $options = [], $textOptions = [] ) | ||
$value | float|integer |
フォーマットする値。 |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 文字列 |
フォーマットされた結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
throws | yii\base\InvalidConfigException |
INTLがインストールされていないか、必要な情報が含まれていない場合。 |
public function asWeight($value, $decimals = null, $options = [], $textOptions = [])
{
return $this->formatUnit(self::UNIT_WEIGHT, self::FORMAT_WIDTH_LONG, $value, $decimals, $options, $textOptions);
}
定義元: yii\base\Component::attachBehavior()
このコンポーネントにビヘイビアをアタッチします。
このメソッドは、与えられた構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことで、ビヘイビアオブジェクトはこのコンポーネントにアタッチされます。
こちらも参照してください detachBehavior()。
public yii\base\Behavior attachBehavior ( $name, $behavior ) | ||
$name | 文字列 |
ビヘイビアの名前。 |
$behavior | string|array|yii\base\Behavior |
ビヘイビアの構成。これは、次のいずれかになります。
|
return | yii\base\Behavior |
ビヘイビアオブジェクト |
---|
public function attachBehavior($name, $behavior)
{
$this->ensureBehaviors();
return $this->attachBehaviorInternal($name, $behavior);
}
定義元: yii\base\Component::attachBehaviors()
コンポーネントにビヘイビアのリストをアタッチします。
各ビヘイビアはその名前でインデックス付けされ、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。
こちらも参照してください attachBehavior()。
public void attachBehaviors ( $behaviors ) | ||
$behaviors | 配列 |
コンポーネントにアタッチされるビヘイビアのリスト |
public function attachBehaviors($behaviors)
{
$this->ensureBehaviors();
foreach ($behaviors as $name => $behavior) {
$this->attachBehaviorInternal($name, $behavior);
}
}
定義元: yii\base\Component::behaviors()
このコンポーネントが振る舞うべきビヘイビアのリストを返します。
子クラスは、このメソッドをオーバーライドして、ビヘイビアとして動作させたいものを指定できます。
このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。
'behaviorName' => [
'class' => 'BehaviorClass',
'property1' => 'value1',
'property2' => 'value2',
]
ビヘイビアクラスは、yii\base\Behavior から拡張する必要があることに注意してください。ビヘイビアは、名前を使用するか、匿名でアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、ビヘイビアは後で getBehavior() を使用して取得するか、detachBehavior() を使用してデタッチできます。匿名ビヘイビアは、取得またはデタッチできません。
このメソッドで宣言されたビヘイビアは、自動的に (オンデマンドで) コンポーネントにアタッチされます。
public array behaviors ( ) | ||
return | 配列 |
ビヘイビアの構成。 |
---|
public function behaviors()
{
return [];
}
定義元: yii\base\Component::canGetProperty()
プロパティを読み取ることができるかどうかを示す値を返します。
プロパティは、次の場合に読み取ることができます。
- クラスには、指定された名前に関連付けられたゲッターメソッドがあります (この場合、プロパティ名は大小文字を区別しません)。
- クラスには、指定された名前のメンバ変数があります (
$checkVars
が true の場合)。 - アタッチされたビヘイビアには、指定された名前の読み取り可能なプロパティがあります (
$checkBehaviors
が true の場合)。
こちらも参照してください canSetProperty()。
public boolean canGetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | 文字列 |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
$checkBehaviors | boolean |
ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか |
return | boolean |
プロパティを読み取ることができるかどうか |
---|
public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canGetProperty($name, $checkVars)) {
return true;
}
}
}
return false;
}
定義元: yii\base\Component::canSetProperty()
プロパティを設定できるかどうかを示す値を返します。
プロパティは、次の場合に書き込むことができます。
- クラスには、指定された名前に関連付けられたセッターメソッドがあります (この場合、プロパティ名は大小文字を区別しません)。
- クラスには、指定された名前のメンバ変数があります (
$checkVars
が true の場合)。 - アタッチされたビヘイビアには、指定された名前の書き込み可能なプロパティがあります (
$checkBehaviors
が true の場合)。
こちらも参照してください canGetProperty()。
public boolean canSetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | 文字列 |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
$checkBehaviors | boolean |
ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか |
return | boolean |
プロパティを書き込むことができるかどうか |
---|
public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->canSetProperty($name, $checkVars)) {
return true;
}
}
}
return false;
}
::class
を使用してください。
定義元: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
public static string className ( ) | ||
return | 文字列 |
このクラスの完全修飾名。 |
---|
public static function className()
{
return get_called_class();
}
指定された型とフォーマットに基づいて数値フォーマッタを作成します。
パターンに基づいて数値フォーマッタを作成するために、このメソッドをオーバーライドすることができます。
protected NumberFormatter createNumberFormatter ( $style, $decimals = null, $options = [], $textOptions = [] ) | ||
$style | integer |
数値フォーマッタのタイプ。値: NumberFormatter::DECIMAL, ::CURRENCY, ::PERCENT, ::SCIENTIFIC, ::SPELLOUT, ::ORDINAL ::DURATION, ::PATTERN_RULEBASED, ::DEFAULT_STYLE, ::IGNORE |
$decimals | integer|null |
小数点以下の桁数。 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | NumberFormatter |
作成されたフォーマッタのインスタンス |
---|
protected function createNumberFormatter($style, $decimals = null, $options = [], $textOptions = [])
{
$formatter = new NumberFormatter($this->locale, $style);
// set text attributes
foreach ($this->numberFormatterTextOptions as $attribute => $value) {
$this->setFormatterTextAttribute($formatter, $attribute, $value, 'numberFormatterTextOptions', 'numberFormatterOptions');
}
foreach ($textOptions as $attribute => $value) {
$this->setFormatterTextAttribute($formatter, $attribute, $value, '$textOptions', '$options');
}
// set attributes
foreach ($this->numberFormatterOptions as $attribute => $value) {
$this->setFormatterIntAttribute($formatter, $attribute, $value, 'numberFormatterOptions', 'numberFormatterTextOptions');
}
foreach ($options as $attribute => $value) {
$this->setFormatterIntAttribute($formatter, $attribute, $value, '$options', '$textOptions');
}
if ($decimals !== null) {
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, $decimals);
$formatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, $decimals);
}
// set symbols
if ($this->decimalSeparator !== null) {
$formatter->setSymbol(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, $this->decimalSeparator);
}
if ($this->currencyDecimalSeparator !== null) {
$formatter->setSymbol(NumberFormatter::MONETARY_SEPARATOR_SYMBOL, $this->currencyDecimalSeparator);
}
if ($this->thousandSeparator !== null) {
$formatter->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, $this->thousandSeparator);
$formatter->setSymbol(NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL, $this->thousandSeparator);
}
foreach ($this->numberFormatterSymbols as $symbol => $value) {
$this->setFormatterSymbol($formatter, $symbol, $value, 'numberFormatterSymbols');
}
return $formatter;
}
定義元: yii\base\Component::detachBehavior()
コンポーネントからビヘイビアをデタッチします。
ビヘイビアの yii\base\Behavior::detach() メソッドが呼び出されます。
public yii\base\Behavior|null detachBehavior ( $name ) | ||
$name | 文字列 |
ビヘイビアの名前。 |
return | yii\base\Behavior|null |
切り離されたビヘイビア。ビヘイビアが存在しない場合は Null。 |
---|
public function detachBehavior($name)
{
$this->ensureBehaviors();
if (isset($this->_behaviors[$name])) {
$behavior = $this->_behaviors[$name];
unset($this->_behaviors[$name]);
$behavior->detach();
return $behavior;
}
return null;
}
定義元: yii\base\Component::detachBehaviors()
コンポーネントからすべてのビヘイビアをデタッチします。
public void detachBehaviors ( ) |
public function detachBehaviors()
{
$this->ensureBehaviors();
foreach ($this->_behaviors as $name => $behavior) {
$this->detachBehavior($name);
}
}
定義元: yii\base\Component::ensureBehaviors()
behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。
public void ensureBehaviors ( ) |
public function ensureBehaviors()
{
if ($this->_behaviors === null) {
$this->_behaviors = [];
foreach ($this->behaviors() as $name => $behavior) {
$this->attachBehaviorInternal($name, $behavior);
}
}
}
指定されたフォーマットタイプに基づいて値をフォーマットします。
このメソッドは、このクラスで利用可能な "as" メソッドのいずれかを呼び出してフォーマットを実行します。タイプ "xyz" の場合、メソッド "asXyz" が使用されます。たとえば、フォーマットが "html" の場合、asHtml() が使用されます。フォーマット名は、大文字と小文字が区別されません。
public string format ( $value, $format ) | ||
$value | mixed |
フォーマットされる値。 |
$format | string|array|Closure |
値のフォーマット。例えば、"html"、"text"、またはフォーマットされた値を返す匿名関数。 フォーマットメソッドの追加のパラメータを指定するには、配列を使用できます。配列の最初の要素はフォーマット名を指定し、残りの要素はフォーマットメソッドのパラメータとして使用されます。たとえば、 匿名関数のシグネチャは、 |
return | 文字列 |
フォーマット結果。 |
---|---|---|
throws | yii\base\InvalidArgumentException |
フォーマットタイプがこのクラスでサポートされていない場合。 |
public function format($value, $format)
{
if ($format instanceof Closure) {
return $format($value, $this);
}
if (is_array($format)) {
if (!isset($format[0])) {
throw new InvalidArgumentException('The $format array must contain at least one element.');
}
$f = $format[0];
$format[0] = $value;
$params = $format;
$format = $f;
} else {
$params = [$value];
}
$method = 'as' . $format;
if ($this->hasMethod($method)) {
return call_user_func_array([$this, $method], array_values($params));
}
throw new InvalidArgumentException("Unknown format type: $format");
}
バイト単位の値を指定して、人間が読める形式の数値部分をフォーマットします。
protected array formatNumber ( $value, $decimals, $maxPosition, $formatBase, $options, $textOptions ) | ||
$value | string|integer|float |
フォーマットされるバイト単位の値。 |
$decimals | integer|null |
小数点以下の桁数 |
$maxPosition | integer |
サイズ単位の最大内部位置。$formatBaseが配列の場合は無視されます |
$formatBase | array|integer |
各次の単位が計算される基準。1000または1024、または配列 |
$options | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterOptionsとマージされます。 |
$textOptions | 配列 |
数値フォーマッタのオプション設定。このパラメータは、$numberFormatterTextOptionsとマージされます。 |
return | 配列 |
[フォーマットされた数値を含む Yii::t のパラメータ、サイズ単位の内部位置] |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合、またはフォーマットに失敗した場合。 |
protected function formatNumber($value, $decimals, $maxPosition, $formatBase, $options, $textOptions)
{
$value = $this->normalizeNumericValue($value);
$position = 0;
if (is_array($formatBase)) {
$maxPosition = count($formatBase) - 1;
}
do {
if (is_array($formatBase)) {
if (!isset($formatBase[$position + 1])) {
break;
}
if (abs($value) < $formatBase[$position + 1]) {
break;
}
} else {
if (abs($value) < $formatBase) {
break;
}
$value /= $formatBase;
}
$position++;
} while ($position < $maxPosition + 1);
if (is_array($formatBase) && $position !== 0) {
$value /= $formatBase[$position];
}
// no decimals for smallest unit
if ($position === 0) {
$decimals = 0;
} elseif ($decimals !== null) {
$value = round($value, $decimals);
}
// disable grouping for edge cases like 1023 to get 1023 B instead of 1,023 B
$oldThousandSeparator = $this->thousandSeparator;
$this->thousandSeparator = '';
if ($this->_intlLoaded && !isset($options[NumberFormatter::GROUPING_USED])) {
$options[NumberFormatter::GROUPING_USED] = 0;
}
// format the size value
$params = [
// this is the unformatted number used for the plural rule
// abs() to make sure the plural rules work correctly on negative numbers, intl does not cover this
// https://english.stackexchange.com/questions/9735/is-1-followed-by-a-singular-or-plural-noun
'n' => abs($value),
// this is the formatted number used for display
'nFormatted' => $this->asDecimal($value, $decimals, $options, $textOptions),
];
$this->thousandSeparator = $oldThousandSeparator;
return [$params, $position];
}
定義元: yii\base\Component::getBehavior()
名前付きのビヘイビアオブジェクトを返します。
public yii\base\Behavior|null getBehavior ( $name ) | ||
$name | 文字列 |
ビヘイビア名 |
return | yii\base\Behavior|null |
ビヘイビアオブジェクト。ビヘイビアが存在しない場合は null |
---|
public function getBehavior($name)
{
$this->ensureBehaviors();
return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}
定義元: yii\base\Component::getBehaviors()
このコンポーネントにアタッチされたすべてのビヘイビアを返します。
public yii\base\Behavior[] getBehaviors ( ) | ||
return | yii\base\Behavior[] |
このコンポーネントにアタッチされたビヘイビアのリスト |
---|
public function getBehaviors()
{
$this->ensureBehaviors();
return $this->_behaviors;
}
定義元: yii\base\Component::hasEventHandlers()
名前付きイベントにアタッチされたハンドラがあるかどうかを示す値を返します。
public boolean hasEventHandlers ( $name ) | ||
$name | 文字列 |
イベント名 |
return | boolean |
イベントにアタッチされたハンドラーがあるかどうか。 |
---|
public function hasEventHandlers($name)
{
$this->ensureBehaviors();
if (!empty($this->_events[$name])) {
return true;
}
foreach ($this->_eventWildcards as $wildcard => $handlers) {
if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
return true;
}
}
return Event::hasHandlers($this, $name);
}
定義元: yii\base\Component::hasMethod()
メソッドが定義されているかどうかを示す値を返します。
メソッドは次の場合に定義されます
- クラスに指定された名前のメソッドがある
- アタッチされたビヘイビアに、指定された名前のメソッドがある(
$checkBehaviors
がtrueの場合)。
public boolean hasMethod ( $name, $checkBehaviors = true ) | ||
$name | 文字列 |
プロパティ名 |
$checkBehaviors | boolean |
ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか |
return | boolean |
メソッドが定義されているかどうか |
---|
public function hasMethod($name, $checkBehaviors = true)
{
if (method_exists($this, $name)) {
return true;
} elseif ($checkBehaviors) {
$this->ensureBehaviors();
foreach ($this->_behaviors as $behavior) {
if ($behavior->hasMethod($name)) {
return true;
}
}
}
return false;
}
定義元: yii\base\Component::hasProperty()
このコンポーネントにプロパティが定義されているかどうかを示す値を返します。
プロパティは次の場合に定義されます
- クラスに、指定された名前に関連付けられたゲッターまたはセッターメソッドがある(この場合、プロパティ名は大文字と小文字が区別されません)。
- クラスには、指定された名前のメンバ変数があります (
$checkVars
が true の場合)。 - アタッチされたビヘイビアに、指定された名前のプロパティがある(
$checkBehaviors
がtrueの場合)。
参照
public boolean hasProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | 文字列 |
プロパティ名 |
$checkVars | boolean |
メンバ変数をプロパティとして扱うかどうか |
$checkBehaviors | boolean |
ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか |
return | boolean |
プロパティが定義されているかどうか |
---|
public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}
オブジェクトを初期化します。
このメソッドは、オブジェクトが与えられた構成で初期化された後、コンストラクタの最後に呼び出されます。
public void init ( ) |
public function init()
{
if ($this->timeZone === null) {
$this->timeZone = Yii::$app->timeZone;
}
if ($this->locale === null) {
$this->locale = Yii::$app->language;
}
if ($this->language === null) {
$this->language = strtok($this->locale, '@');
}
if ($this->booleanFormat === null) {
$this->booleanFormat = [Yii::t('yii', 'No', [], $this->language), Yii::t('yii', 'Yes', [], $this->language)];
}
if ($this->nullDisplay === null) {
$this->nullDisplay = '<span class="not-set">' . Yii::t('yii', '(not set)', [], $this->language) . '</span>';
}
$this->_intlLoaded = extension_loaded('intl');
if (!$this->_intlLoaded) {
if ($this->decimalSeparator === null) {
$this->decimalSeparator = '.';
}
if ($this->thousandSeparator === null) {
$this->thousandSeparator = ',';
}
}
}
指定された値とその正規化されたバージョンの文字列表現が異なるかどうかを確認します。
protected boolean isNormalizedValueMispresented ( $value, $normalizedValue ) | ||
$value | string|float|integer | |
$normalizedValue | float|integer |
protected function isNormalizedValueMispresented($value, $normalizedValue)
{
if (empty($value)) {
$value = 0;
}
return (string) $normalizedValue !== $this->normalizeNumericStringValue((string) $value);
}
さまざまな日付/時刻フォーマットメソッドで受け入れられる DateTime オブジェクトとして、指定された日時値を正規化します。
protected DateTime|array normalizeDatetimeValue ( $value, $checkDateTimeInfo = false ) | ||
$value | integer|string|DateTime|DateTimeInterface|null |
正規化される日時値。以下の型の値がサポートされています。
|
$checkDateTimeInfo | boolean |
日時値に時間および日付情報が付加されているかどうかをチェックするかどうか。デフォルトは |
return | DateTime|array |
正規化された日時値。バージョン 2.0.1 以降、 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値を日付値として評価できない場合。 |
protected function normalizeDatetimeValue($value, $checkDateTimeInfo = false)
{
// checking for DateTime and DateTimeInterface is not redundant, DateTimeInterface is only in PHP>5.5
if ($value === null || $value instanceof DateTime || $value instanceof DateTimeInterface) {
// skip any processing
return $checkDateTimeInfo ? [$value, true, true] : $value;
}
if (empty($value)) {
$value = 0;
}
try {
if (is_numeric($value)) { // process as unix timestamp, which is always in UTC
$timestamp = new DateTime('@' . (int) $value, new DateTimeZone('UTC'));
return $checkDateTimeInfo ? [$timestamp, true, true] : $timestamp;
}
if (
($timestamp = DateTime::createFromFormat(
'Y-m-d|',
$value,
new DateTimeZone($this->defaultTimeZone)
)
) !== false
) { // try Y-m-d format (support invalid dates like 2012-13-01)
return $checkDateTimeInfo ? [$timestamp, false, true] : $timestamp;
}
if (
($timestamp = DateTime::createFromFormat(
'Y-m-d H:i:s',
$value,
new DateTimeZone($this->defaultTimeZone)
)
) !== false
) { // try Y-m-d H:i:s format (support invalid dates like 2012-13-01 12:63:12)
return $checkDateTimeInfo ? [$timestamp, true, true] : $timestamp;
}
// finally try to create a DateTime object with the value
if ($checkDateTimeInfo) {
$timestamp = new DateTime($value, new DateTimeZone($this->defaultTimeZone));
$info = date_parse($value);
return [
$timestamp,
!($info['hour'] === false && $info['minute'] === false && $info['second'] === false),
!($info['year'] === false && $info['month'] === false && $info['day'] === false && empty($info['zone'])),
];
}
return new DateTime($value, new DateTimeZone($this->defaultTimeZone));
} catch (\Exception $e) {
throw new InvalidArgumentException("'$value' is not a valid date time value: " . $e->getMessage()
. "\n" . print_r(DateTime::getLastErrors(), true), $e->getCode(), $e);
}
}
数値文字列値を正規化します。
protected string normalizeNumericStringValue ( $value ) | ||
$value | 文字列 | |
return | 文字列 |
文字列としての正規化された数値 |
---|
protected function normalizeNumericStringValue($value)
{
$powerPosition = strrpos($value, 'E');
if ($powerPosition !== false) {
$valuePart = substr($value, 0, $powerPosition);
$powerPart = substr($value, $powerPosition + 1);
} else {
$powerPart = null;
$valuePart = $value;
}
$separatorPosition = strrpos($valuePart, '.');
if ($separatorPosition !== false) {
$integerPart = substr($valuePart, 0, $separatorPosition);
$fractionalPart = substr($valuePart, $separatorPosition + 1);
} else {
$integerPart = $valuePart;
$fractionalPart = null;
}
// truncate insignificant zeros, keep minus
$integerPart = preg_replace('/^\+?(-?)0*(\d+)$/', '$1$2', $integerPart);
// for zeros only leave one zero, keep minus
$integerPart = preg_replace('/^\+?(-?)0*$/', '${1}0', $integerPart);
if ($fractionalPart !== null) {
// truncate insignificant zeros
$fractionalPart = rtrim($fractionalPart, '0');
if (empty($fractionalPart)) {
$fractionalPart = $powerPart !== null ? '0' : null;
}
}
$normalizedValue = $integerPart;
if ($fractionalPart !== null) {
$normalizedValue .= '.' . $fractionalPart;
} elseif ($normalizedValue === '-0') {
$normalizedValue = '0';
}
if ($powerPart !== null) {
$normalizedValue .= 'E' . $powerPart;
}
return $normalizedValue;
}
数値入力値を正規化します。
protected float|integer normalizeNumericValue ( $value ) | ||
$value | mixed |
入力値 |
return | float|integer |
正規化された数値 |
---|---|---|
throws | yii\base\InvalidArgumentException |
入力値が数値でない場合。 |
protected function normalizeNumericValue($value)
{
if (empty($value)) {
return 0;
}
if (is_string($value) && is_numeric($value)) {
$value = (float) $value;
}
if (!is_numeric($value)) {
throw new InvalidArgumentException("'$value' is not a numeric value.");
}
return $value;
}
定義場所: yii\base\Component::off()
このコンポーネントから既存のイベントハンドラをデタッチします。
このメソッドは、on() の反対です。
注意:イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードに一致するプレーンな名前で登録されたハンドラーは残ります。
on() も参照してください。
public boolean off ( $name, $handler = null ) | ||
$name | 文字列 |
イベント名 |
$handler | callable|null |
削除するイベントハンドラー。null の場合、名前付きイベントにアタッチされているすべてのハンドラーが削除されます。 |
return | boolean |
ハンドラーが見つかり、デタッチされた場合 |
---|
public function off($name, $handler = null)
{
$this->ensureBehaviors();
if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
return false;
}
if ($handler === null) {
unset($this->_events[$name], $this->_eventWildcards[$name]);
return true;
}
$removed = false;
// plain event names
if (isset($this->_events[$name])) {
foreach ($this->_events[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->_events[$name][$i]);
$removed = true;
}
}
if ($removed) {
$this->_events[$name] = array_values($this->_events[$name]);
return true;
}
}
// wildcard event names
if (isset($this->_eventWildcards[$name])) {
foreach ($this->_eventWildcards[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->_eventWildcards[$name][$i]);
$removed = true;
}
}
if ($removed) {
$this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
// remove empty wildcards to save future redundant regex checks:
if (empty($this->_eventWildcards[$name])) {
unset($this->_eventWildcards[$name]);
}
}
}
return $removed;
}
定義場所: yii\base\Component::on()
イベントハンドラをイベントにアタッチします。
イベントハンドラーは有効な PHP コールバックでなければなりません。以下にいくつかの例を示します。
function ($event) { ... } // anonymous function
[$object, 'handleClick'] // $object->handleClick()
['Page', 'handleClick'] // Page::handleClick()
'handleClick' // global function handleClick()
イベントハンドラーは、以下のシグネチャで定義する必要があります。
function ($event)
ここで、$event
は、イベントに関連するパラメーターを含む yii\base\Event オブジェクトです。
2.0.14 以降では、イベント名をワイルドカードパターンとして指定できます。
$component->on('event.group.*', function ($event) {
Yii::trace($event->name . ' is triggered.');
});
off() も参照してください。
public void on ( $name, $handler, $data = null, $append = true ) | ||
$name | 文字列 |
イベント名 |
$handler | callable |
イベントハンドラー |
$data | mixed |
イベントがトリガーされたときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。 |
$append | boolean |
新しいイベントハンドラーを既存のハンドラーリストの最後に追加するかどうか。false の場合、新しいハンドラーは既存のハンドラーリストの先頭に挿入されます。 |
public function on($name, $handler, $data = null, $append = true)
{
$this->ensureBehaviors();
if (strpos($name, '*') !== false) {
if ($append || empty($this->_eventWildcards[$name])) {
$this->_eventWildcards[$name][] = [$handler, $data];
} else {
array_unshift($this->_eventWildcards[$name], [$handler, $data]);
}
return;
}
if ($append || empty($this->_events[$name])) {
$this->_events[$name][] = [$handler, $data];
} else {
array_unshift($this->_events[$name], [$handler, $data]);
}
}
定義場所: yii\base\Component::trigger()
イベントをトリガーします。
このメソッドは、イベントの発生を表します。クラスレベルのハンドラーを含む、イベントにアタッチされているすべてのハンドラーを呼び出します。
public void trigger ( $name, yii\base\Event $event = null ) | ||
$name | 文字列 |
イベント名 |
$event | yii\base\Event|null |
イベントインスタンス。設定されていない場合は、デフォルトの yii\base\Event オブジェクトが作成されます。 |
public function trigger($name, Event $event = null)
{
$this->ensureBehaviors();
$eventHandlers = [];
foreach ($this->_eventWildcards as $wildcard => $handlers) {
if (StringHelper::matchWildcard($wildcard, $name)) {
$eventHandlers[] = $handlers;
}
}
if (!empty($this->_events[$name])) {
$eventHandlers[] = $this->_events[$name];
}
if (!empty($eventHandlers)) {
$eventHandlers = call_user_func_array('array_merge', $eventHandlers);
if ($event === null) {
$event = new Event();
}
if ($event->sender === null) {
$event->sender = $this;
}
$event->handled = false;
$event->name = $name;
foreach ($eventHandlers as $handler) {
$event->data = $handler[1];
call_user_func($handler[0], $event);
// stop further handling if the event is handled
if ($event->handled) {
return;
}
}
}
// invoke class-level attached handlers
Event::trigger($this, $name, $event);
}
コメントするには、サインアップまたはログインしてください。