1 フォロワー

クラス 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() 関数を使用してください。

公開プロパティ

継承されたプロパティを非表示にする

プロパティ 説明 定義元
$baseUnits 配列 $measureUnits からの最小単位の乗数として使用される基本単位。 yii\i18n\Formatter
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$booleanFormat 配列 ブール値をフォーマットするときに表示されるテキスト。 yii\i18n\Formatter
$calendar IntlCalendar|整数|null 日付フォーマットに使用されるカレンダー。 yii\i18n\Formatter
$currencyCode 文字列|null asCurrency() に使用するデフォルトの通貨を示す 3 文字の ISO 4217 通貨コード。 yii\i18n\Formatter
$currencyDecimalSeparator 文字列|null 通貨をフォーマットするときに小数点として表示される文字。 yii\i18n\Formatter
$dateFormat 文字列 日付をフォーマットするために使用されるデフォルトのフォーマット文字列。 yii\i18n\Formatter
$datetimeFormat 文字列 日時をフォーマットするために使用されるデフォルトのフォーマット文字列。 yii\i18n\Formatter
$decimalSeparator 文字列|null 数値をフォーマットするときに小数点として表示される文字。 yii\i18n\Formatter
$defaultTimeZone 文字列 タイムゾーンが明示的に含まれていない場合に入力値に想定されるタイムゾーン。 yii\i18n\Formatter
$language 文字列|null 内部メッセージを翻訳するために使用される言語コード (例: en-USen)。 yii\i18n\Formatter
$locale 文字列|null 日付と数値のフォーマットをローカライズするために使用されるロケール ID。 yii\i18n\Formatter
$measureUnits 配列 重さと長さの測定単位の構成。 yii\i18n\Formatter
$nullDisplay 文字列|null null 値をフォーマットするときに表示されるテキスト。 yii\i18n\Formatter
$numberFormatterOptions 配列 createNumberFormatter() によって作成されたすべての数値フォーマッタオブジェクトの intl NumberFormatter::setAttribute() メソッドに渡される名前と値のペアのリスト。 yii\i18n\Formatter
$numberFormatterSymbols 配列 createNumberFormatter() によって作成されたすべての数値フォーマッタオブジェクトの intl NumberFormatter::setSymbol() メソッドに渡される名前と値のペアのリスト。 yii\i18n\Formatter
$numberFormatterTextOptions 配列 intl の NumberFormatter::setTextAttribute() メソッドに渡される名前と値のペアのリストです。createNumberFormatter() によって作成されたすべての数値フォーマッタオブジェクトに対して適用されます。 yii\i18n\Formatter
$sizeFormatBase integer キロバイトの計算に使用される基数(1キロバイトあたり1000バイトまたは1024バイト)。asSize() および asShortSize() で使用されます。 yii\i18n\Formatter
$systemOfUnits 文字列 測定単位のデフォルトのシステム。 yii\i18n\Formatter
$thousandSeparator 文字列|null 数値をフォーマットする際に、桁区切り文字(グループ化区切り文字とも呼ばれる)として表示される文字。 yii\i18n\Formatter
$timeFormat 文字列 時間をフォーマットするために使用されるデフォルトのフォーマット文字列。 yii\i18n\Formatter
$timeZone 文字列|null 時間と日付の値をフォーマットするために使用するタイムゾーン。 yii\i18n\Formatter

パブリックメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__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

プロパティの詳細

継承されたプロパティを非表示にする

$baseUnits パブリックプロパティ(バージョン 2.0.13 以降で利用可能)

$measureUnits からの最小単位の乗数として使用される基本単位。

public array $baseUnits = [
    
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,
    ],
]
$booleanFormat パブリックプロパティ

ブール値をフォーマットする際に表示されるテキスト。最初の要素は false の場合に表示されるテキストに対応し、2番目の要素は true に対応します。デフォルトは ['No', 'Yes'] であり、YesNo$locale に従って翻訳されます。

public array $booleanFormat null
$calendar パブリックプロパティ(バージョン 2.0.7 以降で利用可能)

日付のフォーマットに使用されるカレンダー。このプロパティの値は、IntlDateFormatter クラスのコンストラクタに直接渡されます。

デフォルトは null であり、グレゴリオ暦が使用されることを意味します。グレゴリオ暦には定数 \IntlDateFormatter::GREGORIAN を明示的に渡すこともできます。

例えばジャラリ暦のような別のカレンダーを使用するには、このプロパティを\IntlDateFormatter::TRADITIONALに設定します。その場合、カレンダーは$localeで指定する必要があります。例えば、ペルシャ暦の場合、フォーマッタの設定は次のようになります。

'formatter' => [
    'locale' => 'fa_IR@calendar=persian',
    'calendar' => \IntlDateFormatter::TRADITIONAL,
],

使用可能なカレンダー名は、ICUマニュアルに記載されています。

PHP 5.5以降では、IntlCalendarクラスのインスタンスを使用することもできます。詳細については、PHPマニュアルを参照してください。

PHP intl拡張機能が利用できない場合、このプロパティを設定しても効果はありません。

参照

$currencyCode public プロパティ

asCurrency()で使用するデフォルトの通貨を示す3文字のISO 4217通貨コード。設定されていない場合、$localeに対応する通貨コードが使用されます。この場合、$localeは国コード(例:en-US)を指定する必要があることに注意してください。そうしないと、デフォルトの通貨を決定できません。

public string|null $currencyCode null
$currencyDecimalSeparator public プロパティ (バージョン 2.0.35 以降)

通貨をフォーマットする際に小数点として表示される文字。設定されていない場合、$localeに対応する通貨の小数点記号が使用されます。PHP intl拡張機能が利用できない場合、このプロパティを設定しても効果はありません。

$dateFormat public プロパティ

日付をフォーマットするために使用されるデフォルトのフォーマット文字列。これは、異なる長さのプリセットフォーマットを表す "short"、"medium"、"long"、または "full" にすることができます。

また、ICUマニュアルで指定されているカスタムフォーマットにすることもできます。または、PHPのdate()関数で認識できるフォーマットを表す、php:という接頭辞が付いた文字列にすることもできます。

例:

'MM/dd/yyyy' // date in ICU format
'php:m/d/Y' // the same date in PHP format
public string $dateFormat 'medium'
$datetimeFormat public プロパティ

日時をフォーマットするために使用されるデフォルトのフォーマット文字列。これは、異なる長さのプリセットフォーマットを表す "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
public string $datetimeFormat 'medium'
$decimalSeparator public プロパティ

数値をフォーマットする際に小数点として表示される文字。設定されていない場合、$localeに対応する小数点記号が使用されます。PHP intl拡張機能が利用できない場合、デフォルト値は'.'です。

$defaultTimeZone public プロパティ (バージョン 2.0.1 以降)

タイムゾーンが明示的に含まれていない場合に入力値に想定されるタイムゾーン。

値は、UTCEurope/BerlinAmerica/Chicagoなどの有効なタイムゾーン識別子である必要があります。使用可能なタイムゾーンについては、phpマニュアルを参照してください。

デフォルトはUTCなので、データベースに別のタイムゾーンで日時値を保存する場合にのみ、この値を調整する必要があります。

UNIXタイムスタンプは定義上常にUTCであることに注意してください。つまり、UTCとは異なるデフォルトのタイムゾーンを指定しても、UNIXタイムスタンプとして指定された日付の値には影響しません。

public string $defaultTimeZone 'UTC'
$language public プロパティ (バージョン 2.0.28 以降)

内部メッセージを翻訳するために使用される言語コード(例:en-USen)。設定されていない場合、$localeが使用されます(@calendarパラメーターが含まれている場合は除きます)。

public string|null $language null
$locale public プロパティ

日付と数値のフォーマットをローカライズするために使用されるロケールID。数値および日付のフォーマットの場合、これはPHP intl拡張機能がインストールされている場合にのみ有効です。設定されていない場合、yii\base\Application::$languageが使用されます。

public string|null $locale null
$measureUnits public プロパティ (バージョン 2.0.13 以降)

重量と長さの測定単位の設定。この配列には最も使用可能な測定単位が含まれていますが、特別な要件がある場合は変更できます。

例えば、より小さい測定単位を追加できます。

$this->measureUnits[self::UNIT_LENGTH][self::UNIT_SYSTEM_METRIC] = [
    'nanometer' => 0.000001
]

参照

public array $measureUnits = [
    
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,
        ],
    ],
]
$nullDisplay public property

null値をフォーマットする際に表示されるテキストです。デフォルトは'<span class="not-set">(not set)</span>'で、(not set)$localeに従って翻訳されます。

public string|null $nullDisplay null
$numberFormatterOptions public property

createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setAttribute()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。

可能なオプションについては、PHPマニュアルを参照してください。

例えば、小数点以下の桁数の最大値と最小値を調整するには、このプロパティを次のように構成できます。

[
    NumberFormatter::MIN_FRACTION_DIGITS => 0,
    NumberFormatter::MAX_FRACTION_DIGITS => 2,
]
$numberFormatterSymbols public property (available since version 2.0.4)

createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setSymbol()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。

可能なオプションについては、PHPマニュアルを参照してください。

例えば、ロシア・ルーブルのруб.の代わりにU+20BDのようなカスタム通貨記号を選択する場合

[
    NumberFormatter::CURRENCY_SYMBOL => '₽',
]
$numberFormatterTextOptions public property

createNumberFormatter()によって作成されるすべての数値フォーマッターオブジェクトのintl NumberFormatter::setTextAttribute()メソッドに渡される名前と値のペアのリストです。このプロパティは、PHP intl拡張機能がインストールされている場合にのみ有効です。

可能なオプションについては、PHPマニュアルを参照してください。

例えば、負の数のマイナス記号を変更するには、このプロパティを次のように構成できます。

[
    NumberFormatter::NEGATIVE_PREFIX => 'MINUS',
]
$sizeFormatBase public property

asSize()asShortSize()で使用される、キロバイトの計算基準(1キロバイトあたり1000バイトまたは1024バイト)。デフォルトは1024です。

public integer $sizeFormatBase 1024
$systemOfUnits public property (available since version 2.0.13)

測定単位のデフォルトのシステム。デフォルトはUNIT_SYSTEM_METRICです。可能な値

参照

public string $systemOfUnits self::UNIT_SYSTEM_METRIC
$thousandSeparator public プロパティ

数値をフォーマットする際に、桁区切り文字(グループ化区切り文字とも呼ばれます)として表示される文字。設定されていない場合、$locale に対応する桁区切り文字が使用されます。PHP intl 拡張機能が利用できない場合、デフォルト値は ',' です。

$timeFormat public プロパティ

時間をフォーマットするために使用されるデフォルトのフォーマット文字列。これは "short"、"medium"、"long"、または "full" にすることができ、長さの異なるプリセットフォーマットを表します。

また、ICUマニュアルで指定されているカスタムフォーマットにすることもできます。または、PHPのdate()関数で認識できるフォーマットを表す、php:という接頭辞が付いた文字列にすることもできます。

例:

'HH:mm:ss' // time in ICU format
'php:H:i:s' // the same time in PHP format
public string $timeFormat 'medium'
$timeZone public プロパティ

時間と日付の値をフォーマットするために使用するタイムゾーン。

これは、date_default_timezone_set() に渡すことができる任意の値(例:UTCEurope/Berlin、または America/Chicago)です。利用可能なタイムゾーンについては、php マニュアルを参照してください。このプロパティが設定されていない場合は、yii\base\Application::$timeZone が使用されます。

入力データにおけるデフォルトのタイムゾーンは、入力された日付の値にタイムゾーンが含まれていない場合、デフォルトで UTC とみなされることに注意してください。データベースに別のタイムゾーンでデータを保存する場合は、それに応じて$defaultTimeZoneを調整する必要があります。

public string|null $timeZone null

メソッドの詳細

継承されたメソッドを非表示

__call() public メソッド

定義元: 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()");
}

            
__clone() public メソッド

定義元: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトをクローンしてオブジェクトが作成された後に呼び出されます。

古いオブジェクトに添付されているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public メソッド

定義元: 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();
}

            
__get() public メソッド

定義元: 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);
}

            
__isset() public メソッド

定義元: yii\base\Component::__isset()

プロパティが設定されているか(定義されていて、nullではないか)を確認します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターで定義されたプロパティ:プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ:プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合は false を返します

このメソッドは、isset($component->property)を実行したときに暗黙的に呼び出される PHP のマジックメソッドであるため、直接呼び出さないでください。

https://www.php.net/manual/en/function.isset.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;
}

            
__set() public メソッド

定義元: 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);
}

            
__unset() public メソッド

定義元: yii\base\Component::__unset()

コンポーネントプロパティを null に設定します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値を null に設定します。
  • ビヘイビアのプロパティ: プロパティ値を null に設定します。

このメソッドは、unset($component->property)を実行したときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

参考: https://www.php.net/manual/en/function.unset.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);
}

            
asBoolean() public メソッド

値をブール値としてフォーマットします。

参考: $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];
}

            
asCurrency() public メソッド

値を通貨数値としてフォーマットします。

この関数は、動作するために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);
}

            
asCurrencyStringFallback() protected メソッド (バージョン 2.0.16 以降で利用可能)

値を通貨数値としてフォーマットするためのフォールバック。

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);
}

            
asDate() public メソッド

値を日付としてフォーマットします。

参考: $dateFormat

public string asDate ( $value, $format null )
$value integer|string|DateTime|DateTimeInterface|null

フォーマットされる値。次の型の値がサポートされています

  • UNIXタイムスタンプを表す整数。UNIXタイムスタンプは定義上常にUTCです。
  • DateTimeオブジェクトを作成するために解析できる文字列。タイムスタンプは、タイムゾーンが明示的に指定されていない限り、$defaultTimeZoneにあると見なされます。
  • PHPのDateTimeオブジェクト。DateTimeオブジェクトのタイムゾーンを設定して、ソースタイムゾーンを指定できます。

フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZone$timeZoneを同じ値に設定する必要があります。また、"2017-06-05"のように時間情報がない値に対しては変換は行われません。

$format 文字列|null

値を日付文字列に変換するために使用されるフォーマット。nullの場合、$dateFormatが使用されます。

これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。

または、これは、PHPのdate()関数で認識できる形式を表すphp:で始まる文字列にすることもできます。

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');
}

            
asDatetime() public メソッド

値を日時としてフォーマットします。

参考: $datetimeFormat

public string asDatetime ( $value, $format null )
$value integer|string|DateTime|DateTimeInterface|null

フォーマットされる値。次の型の値がサポートされています

  • UNIXタイムスタンプを表す整数。UNIXタイムスタンプは定義上常にUTCです。
  • DateTimeオブジェクトを作成するために解析できる文字列。タイムスタンプは、タイムゾーンが明示的に指定されていない限り、$defaultTimeZoneにあると見なされます。
  • PHPのDateTimeオブジェクト。DateTimeオブジェクトのタイムゾーンを設定して、ソースタイムゾーンを指定できます。

フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZone$timeZoneを同じ値に設定する必要があります。

$format 文字列|null

値を日付文字列に変換するために使用されるフォーマット。nullの場合、$datetimeFormatが使用されます。

これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。

または、これは、PHPのdate()関数で認識できる形式を表すphp:で始まる文字列にすることもできます。

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');
}

            
asDecimal() public メソッド

値を10進数としてフォーマットします。

プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。

2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。

参照

public string asDecimal ( $value, $decimals null, $options = [], $textOptions = [] )
$value mixed

フォーマットされる値。

$decimals integer|null

小数点以下の桁数。指定しない場合、桁数は入力値によって異なり、$numberFormatterOptionsを使用して構成できるNumberFormatter::MIN_FRACTION_DIGITSNumberFormatter::MAX_FRACTION_DIGITSに基づいて決定されます。PHP intl拡張機能が利用できない場合、デフォルト値は2です。intlが利用可能な環境とそうでない環境で一貫した動作が必要な場合は、ここで明示的に値を指定する必要があります。

$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);
}

            
asDecimalStringFallback() protected メソッド (バージョン 2.0.16 以降で利用可能)

値を10進数としてフォーマットするためのフォールバック。

プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。

参照

protected string asDecimalStringFallback ( $value, $decimals 2 )
$value string|integer|float

フォーマットされる値。

$decimals integer|null

小数点以下の桁数。デフォルト値は2です。

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;
}

            
asDuration() public メソッド (バージョン 2.0.7 から利用可能)

値を人間が読める形式の期間として表します。

public string asDuration ( $value, $implodeString ', ', $negativeSign '-' )
$value DateInterval|string|integer|null

フォーマットする値。許容される形式

  • DateInterval オブジェクト
  • integer - 秒数。例:値131は、2分11秒を表します。
  • ISO8601期間形式。たとえば、これらの値はすべて、1日2時間30分の期間を表します。 2015-01-01T13:00:00Z/2015-01-02T13:30:00Z - 2つのdatetime値の間 2015-01-01T13:00:00Z/P1D2H30M - datetime値の後の時間間隔 P1D2H30M/2015-01-02T13:30:00Z - datetime値の前の時間間隔 P1D2H30M - 単純な時間間隔 P-1D2H30M - 負の時間間隔(-1日、2時間、30分
$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));
}

            
asEmail() public メソッド

値を 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);
}

            
asHtml() public メソッド

値を 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);
}

            
asImage() public メソッド

値をイメージタグとしてフォーマットします。

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);
}

            
asInteger() public メソッド

値を丸めずに小数点以下を削除して整数としてフォーマットします。

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);
}

            
asIntegerStringFallback() protected メソッド (バージョン 2.0.16 から利用可能)

値を丸めずに小数点以下を削除して整数としてフォーマットするためのフォールバック。

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);
}

            
asLength() public メソッド (バージョン 2.0.13 から利用可能)

値を人間が読める形式の長さ(例: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);
}

            
asNtext() public メソッド

改行が改行に変換された HTML エンコードされたプレーンテキストとして値をフォーマットします。

public string asNtext ( $value )
$value 文字列|null

フォーマットされる値。

return 文字列

フォーマットされた結果。

                public function asNtext($value)
{
    if ($value === null) {
        return $this->nullDisplay;
    }
    return nl2br(Html::encode($value));
}

            
asOrdinal() public メソッド

値を数値の序数値としてフォーマットします。

この関数には、PHP intl 拡張機能がインストールされている必要があります。

このフォーマッタは非常に大きな数ではうまく機能しません。

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.');
}

            
asParagraphs() public メソッド

値を 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>');
}

            
asPercent() public メソッド

値を "%" 記号付きのパーセント数値としてフォーマットします。

2.0.16以降、正規化後に正しく表現されない数値は、PHP intl拡張機能のサポートなしでフォールバック関数を使用して文字列としてフォーマットされます。非常に大きな数値の場合は、科学的表記法を使用せずに文字列として渡すことをお勧めします。そうしないと、出力が間違っている可能性があります。

public string asPercent ( $value, $decimals null, $options = [], $textOptions = [] )
$value mixed

フォーマットする値。0.7575%になるようなファクターである必要があります。

$decimals integer|null

小数点以下の桁数。指定がない場合、桁数は入力値に依存し、NumberFormatter::MIN_FRACTION_DIGITSNumberFormatter::MAX_FRACTION_DIGITSに基づいて決定されます。これらは$numberFormatterOptionsを使用して構成できます。PHP intl拡張機能が利用できない場合、デフォルト値は0です。intlが利用可能な環境とそうでない環境で一貫した動作を求める場合は、ここで値を明示的に指定する必要があります。

$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) . '%';
}

            
asPercentStringFallback() protected メソッド (バージョン 2.0.16 から利用可能)

値を "%" 記号付きのパーセント数値としてフォーマットするためのフォールバック。

プロパティ$decimalSeparatorは、小数点を示すために使用されます。値は、定義された小数点以下の桁数に自動的に丸められます。

protected string asPercentStringFallback ( $value, $decimals null )
$value string|integer|float

フォーマットされる値。

$decimals integer|null

小数点以下の桁数。デフォルト値は0です。

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) . '%';
}

            
asRaw() public メソッド

値をフォーマットせずにそのままフォーマットします。

このメソッドは、パラメータをそのまま返します。唯一の例外はnull値で、これは$nullDisplayを使用してフォーマットされます。

public string asRaw ( $value )
$value mixed

フォーマットされる値。

return 文字列

フォーマットされた結果。

                public function asRaw($value)
{
    if ($value === null) {
        return $this->nullDisplay;
    }
    return $value;
}

            
asRelativeTime() public メソッド

値を、日付と現在時刻の間の時間間隔を人間が読める形式でフォーマットします。

このメソッドは3つの異なる方法で使用できます。

  1. nowを基準としたタイムスタンプを使用する。
  2. $referenceTimeを基準としたタイムスタンプを使用する。
  3. DateIntervalオブジェクトを使用する。
public string asRelativeTime ( $value, $referenceTime null )
$value integer|string|DateTime|DateTimeInterface|DateInterval|null

フォーマットされる値。次の型の値がサポートされています

$referenceTime integer|string|DateTime|DateTimeInterface|null

$valueDateIntervalオブジェクトではない場合、指定された値はnowの代わりに基準時間として使用されます。

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);
}

            
asScientific() public メソッド

値を科学的な数値としてフォーマットします。

public string asScientific ( $value, $decimals null, $options = [], $textOptions = [] )
$value mixed

フォーマットされる値。

$decimals integer|null

小数点以下の桁数。指定がない場合、桁数は入力値に依存し、NumberFormatter::MIN_FRACTION_DIGITSNumberFormatter::MAX_FRACTION_DIGITSに基づいて決定されます。これらは$numberFormatterOptionsを使用して構成できます。PHP intl拡張機能が利用できない場合、デフォルト値はPHPの設定に依存します。intlが利用可能な環境とそうでない環境で一貫した動作を求める場合は、ここで値を明示的に指定する必要があります。

$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);
}

            
asShortLength() public メソッド (バージョン 2.0.13 から利用可能)

値を人間が読める形式の長さ(例: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);
}

            
asShortSize() public メソッド

バイト単位の値を、人間が読める形式のサイズ(例: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);
        }
    }
}

            
asShortWeight() public メソッド (バージョン 2.0.13 から利用可能)

値を人間が読める形式の重量(例: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);
}

            
asSize() public メソッド

バイト単位の値を、人間が読める形式のサイズ(例: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);
        }
    }
}

            
asSpellout() public メソッド

値を数値のスペルアウトとしてフォーマットします。

この関数には、PHP intl 拡張機能がインストールされている必要があります。

このフォーマッタは非常に大きな数ではうまく機能しません。

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.');
}

            
asText() public メソッド

値を HTML エンコードされたプレーンテキストとしてフォーマットします。

public string asText ( $value )
$value 文字列|null

フォーマットされる値。

return 文字列

フォーマットされた結果。

                public function asText($value)
{
    if ($value === null) {
        return $this->nullDisplay;
    }
    return Html::encode($value);
}

            
asTime() public メソッド

値を時間としてフォーマットします。

こちらも参照してください $timeFormat

public string asTime ( $value, $format null )
$value integer|string|DateTime|DateTimeInterface|null

フォーマットされる値。次の型の値がサポートされています

  • UNIXタイムスタンプを表す整数。UNIXタイムスタンプは定義上常にUTCです。
  • DateTimeオブジェクトを作成するために解析できる文字列。タイムスタンプは、タイムゾーンが明示的に指定されていない限り、$defaultTimeZoneにあると見なされます。
  • PHPのDateTimeオブジェクト。DateTimeオブジェクトのタイムゾーンを設定して、ソースタイムゾーンを指定できます。

フォーマッタは、フォーマットする前に、$timeZoneに従って日付値を変換します。タイムゾーン変換を実行しない場合は、$defaultTimeZone$timeZoneを同じ値に設定する必要があります。

$format 文字列|null

値を日付文字列に変換するために使用されるフォーマット。nullの場合、$timeFormat が使用されます。

これは、「short」、「medium」、「long」、または「full」にすることができ、さまざまな長さのプリセット形式を表します。また、ICUマニュアルで指定されているカスタム形式にすることもできます。

または、これは、PHPのdate()関数で認識できる形式を表すphp:で始まる文字列にすることもできます。

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');
}

            
asTimestamp() public メソッド

日付、時刻、または日時を、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, '.', '');
}

            
asUrl() public メソッド

値をハイパーリンクとしてフォーマットします。

public string asUrl ( $value, $options = [] )
$value mixed

フォーマットされる値。

$options 配列

名前と値のペアの形式のタグオプション。yii\helpers\Html::a() を参照してください。2.0.43 以降、特別なオプション scheme が利用可能です。設定すると、yii\helpers\Html::a() には渡されませんが、URL を正規化し、指定されたスキームを使用するようにすることで、リンクの URL プロトコル部分を制御します。yii\helpers\Url::ensureScheme() を参照してください。scheme が設定されていない場合、元の動作が維持されます。これは、$value に "://" 文字列が見つからない場合に "http://" プレフィックスを追加することです。

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);
}

            
asWeight() public メソッド (バージョン 2.0.13 から利用可能)

値を人間が読める形式の重量(例: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);
}

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、与えられた構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことで、ビヘイビアオブジェクトはこのコンポーネントにアタッチされます。

こちらも参照してください detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name 文字列

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。これは、次のいずれかになります。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するために Yii::createObject() に渡されるオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義元: 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);
    }
}

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが振る舞うべきビヘイビアのリストを返します。

子クラスは、このメソッドをオーバーライドして、ビヘイビアとして動作させたいものを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスは、yii\base\Behavior から拡張する必要があることに注意してください。ビヘイビアは、名前を使用するか、匿名でアタッチできます。名前が配列キーとして使用されている場合、この名前を使用して、ビヘイビアは後で getBehavior() を使用して取得するか、detachBehavior() を使用してデタッチできます。匿名ビヘイビアは、取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、自動的に (オンデマンドで) コンポーネントにアタッチされます。

public array behaviors ( )
return 配列

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

定義元: 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;
}

            
canSetProperty() public メソッド

定義元: 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;
}

            
className() public static メソッド
2.0.14以降非推奨。PHP >= 5.5 では、代わりに ::class を使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return 文字列

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
createNumberFormatter() protected メソッド

指定された型とフォーマットに基づいて数値フォーマッタを作成します。

パターンに基づいて数値フォーマッタを作成するために、このメソッドをオーバーライドすることができます。

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;
}

            
detachBehavior() public メソッド

定義元: 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;
}

            
detachBehaviors() public メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public メソッド

定義元: 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);
        }
    }
}

            
format() public メソッド

指定されたフォーマットタイプに基づいて値をフォーマットします。

このメソッドは、このクラスで利用可能な "as" メソッドのいずれかを呼び出してフォーマットを実行します。タイプ "xyz" の場合、メソッド "asXyz" が使用されます。たとえば、フォーマットが "html" の場合、asHtml() が使用されます。フォーマット名は、大文字と小文字が区別されません。

public string format ( $value, $format )
$value mixed

フォーマットされる値。

$format string|array|Closure

値のフォーマット。例えば、"html"、"text"、またはフォーマットされた値を返す匿名関数。

フォーマットメソッドの追加のパラメータを指定するには、配列を使用できます。配列の最初の要素はフォーマット名を指定し、残りの要素はフォーマットメソッドのパラメータとして使用されます。たとえば、['date', 'Y-m-d'] のフォーマットは、asDate($value, 'Y-m-d') の呼び出しを引き起こします。

匿名関数のシグネチャは、function($value, $formatter) である必要があります。ここで、$value はフォーマットされる値であり、$formatter はFormatterクラスのインスタンスで、他のフォーマット関数を呼び出すために使用できます。匿名関数を使用する可能性は、バージョン2.0.13以降で使用できます。

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");
}

            
formatNumber() protected メソッド (バージョン 2.0.32 以降で使用可能)

バイト単位の値を指定して、人間が読める形式の数値部分をフォーマットします。

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];
}

            
getBehavior() public メソッド

定義元: 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;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされたすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
hasEventHandlers() public メソッド

定義元: 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);
}

            
hasMethod() public メソッド

定義元: 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;
}

            
hasProperty() public メソッド

定義元: 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);
}

            
init() public メソッド

オブジェクトを初期化します。

このメソッドは、オブジェクトが与えられた構成で初期化された後、コンストラクタの最後に呼び出されます。

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 = ',';
        }
    }
}

            
isNormalizedValueMispresented() protected メソッド (バージョン 2.0.16 から利用可能)

指定された値とその正規化されたバージョンの文字列表現が異なるかどうかを確認します。

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);
}

            
normalizeDatetimeValue() protected メソッド

さまざまな日付/時刻フォーマットメソッドで受け入れられる DateTime オブジェクトとして、指定された日時値を正規化します。

protected DateTime|array normalizeDatetimeValue ( $value, $checkDateTimeInfo false )
$value integer|string|DateTime|DateTimeInterface|null

正規化される日時値。以下の型の値がサポートされています。

$checkDateTimeInfo boolean

日時値に時間および日付情報が付加されているかどうかをチェックするかどうか。デフォルトは false です。true の場合、メソッドは正規化されたタイムスタンプを最初の要素として、タイムスタンプが時間情報を持っているかどうかを示すブール値を2番目の要素として、タイムスタンプが日付情報を持っているかどうかを示すブール値を3番目の要素とする配列を返します。このパラメーターは、バージョン2.0.1以降で利用可能です。

return DateTime|array

正規化された日時値。バージョン 2.0.1 以降、$checkDateTimeInfo が true の場合は配列を返すこともあります。配列の最初の要素は正規化されたタイムスタンプであり、2番目の要素はタイムスタンプが時間情報を持っているか、単なる日付値であるかを示すブール値です。バージョン 2.0.12 以降、配列には、タイムスタンプが日付情報を持っているか、単なる時間値であるかを示す3番目のブール値要素が含まれます。

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);
    }
}

            
normalizeNumericStringValue() protected メソッド (バージョン 2.0.16 から利用可能)

数値文字列値を正規化します。

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;
}

            
normalizeNumericValue() protected メソッド

数値入力値を正規化します。

  • empty のものはすべて 0 になります。
  • numeric な文字列は float にキャストされます。
  • それ以外のものは、numeric であればそのまま返され、そうでなければ例外がスローされます。
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;
}

            
off() public メソッド

定義場所: 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;
}

            
on() public メソッド

定義場所: 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]);
    }
}

            
trigger() public メソッド

定義場所: 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);
}