1 フォロワー

クラス yii\i18n\DbMessageSource

継承yii\i18n\DbMessageSource » yii\i18n\MessageSource » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/i18n/DbMessageSource.php

DbMessageSource は yii\i18n\MessageSource を拡張し、翻訳済みメッセージをデータベースに保存するメッセージソースを表します。

データベースには、`source_message` テーブルと `message` テーブルの2つのテーブルが含まれている必要があります。

source_message テーブルには翻訳するメッセージが保存され、message テーブルには翻訳済みのメッセージが保存されます。 これら2つのテーブルの名前は、それぞれ $sourceMessageTable$messageTable を設定することでカスタマイズできます。

データベース接続は $db で指定されます。データベーススキーマはマイグレーションを適用することで初期化できます。

yii migrate --migrationPath=@yii/i18n/migrations/

マイグレーションを使用せず、代わりにSQLが必要な場合は、すべてのデータベースのファイルがmigrationsディレクトリにあります。

公開プロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$cache yii\caching\CacheInterface|配列|文字列 キャッシュオブジェクト、またはキャッシュオブジェクトのアプリケーションコンポーネントID。 yii\i18n\DbMessageSource
$cachingDuration 整数 メッセージがキャッシュ内で有効なままになる時間(秒単位)。 yii\i18n\DbMessageSource
$db yii\db\Connection|配列|文字列 DB接続オブジェクト、またはDB接続のアプリケーションコンポーネントID。 yii\i18n\DbMessageSource
$enableCaching ブール値 翻訳済みメッセージのキャッシュを有効にするかどうか。 yii\i18n\DbMessageSource
$forceTranslation ブール値 ソース言語とターゲット言語が同じ場合にメッセージの翻訳を強制するかどうか。 yii\i18n\MessageSource
$messageTable 文字列 翻訳済みメッセージテーブルの名前。 yii\i18n\DbMessageSource
$sourceLanguage 文字列|null 元のメッセージの言語。 yii\i18n\MessageSource
$sourceMessageTable 文字列 ソースメッセージテーブルの名前。 yii\i18n\DbMessageSource

公開メソッド

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

メソッド 説明 定義元
__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
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
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
hasEventHandlers() 名前付きイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントに対してプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() DbMessageSourceコンポーネントを初期化します。 yii\i18n\DbMessageSource
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
translate() メッセージを指定された言語に翻訳します。 yii\i18n\MessageSource
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
createFallbackQuery() このメソッドは、フォールバック言語メッセージ検索のためのyii\db\Queryオブジェクトを構築します。 yii\i18n\DbMessageSource
loadMessages() 指定された言語とカテゴリのメッセージ翻訳を読み込みます。 yii\i18n\DbMessageSource
loadMessagesFromDb() データベースからメッセージを読み込みます。 yii\i18n\DbMessageSource
translateMessage() 指定されたメッセージを翻訳します。 yii\i18n\MessageSource

イベント

継承されたイベントを隠す

イベント 説明 定義元
EVENT_MISSING_TRANSLATION yii\i18n\MissingTranslationEvent メッセージ翻訳が見つからない場合にトリガーされるイベントです。 yii\i18n\MessageSource

定数

継承された定数を隠す

定数 説明 定義元
CACHE_KEY_PREFIX 'DbMessageSource' キャッシュキーを生成する際に使用されるプレフィックスです。 **非推奨 この定数は一度も使用されておらず、2.1.0で削除されます。** yii\i18n\DbMessageSource

プロパティの詳細

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

$cache public property

キャッシュオブジェクト、またはキャッシュオブジェクトのアプリケーションコンポーネントIDです。メッセージデータはこのキャッシュオブジェクトを使用してキャッシュされます。キャッシングを有効にするには、$enableCachingtrueに設定する必要があることに注意してください。そうでない場合、このプロパティの設定は無効です。

DbMessageSourceオブジェクトが作成された後、このプロパティを変更する場合は、キャッシュオブジェクトのみを割り当てる必要があります。

バージョン2.0.2以降、オブジェクトを作成するためのコンフィグレーション配列にすることもできます。

参照

$cachingDuration public property

メッセージがキャッシュに有効なままになる時間(秒単位)。キャッシュされたデータが期限切れにならないことを示すには、0 を使用します。

参照 $enableCaching

$db public property

DB接続オブジェクト、またはDB接続のアプリケーションコンポーネントID。

DbMessageSourceオブジェクトが作成された後、このプロパティを変更する場合は、DB接続オブジェクトのみを割り当てる必要があります。

バージョン2.0.2以降、オブジェクトを作成するためのコンフィグレーション配列にすることもできます。

$enableCaching public property

翻訳済みメッセージのキャッシュを有効にするかどうか。

public boolean $enableCaching false
$messageTable public property

翻訳済みメッセージテーブルの名前。

public string $messageTable '{{%message}}'
$sourceMessageTable public property

ソースメッセージテーブルの名前。

public string $sourceMessageTable '{{%source_message}}'

メソッドの詳細

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

__call() public method

定義先: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定されたメソッドがあるかどうかをチェックし、利用可能な場合は実行します。

これはPHPのマジックメソッドであり、不明なメソッドが呼び出されたときに暗黙的に呼び出されるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name 文字列

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 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 method

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

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

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

public void __clone ( )

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

            
__construct() public method

定義先: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つのことを行います。

  • 指定されたコンフィグレーション$configを使用してオブジェクトを初期化します。
  • init()を呼び出します。

このメソッドを子クラスでオーバーライドする場合は、

  • コンストラクタの最後のパラメータが、ここにある$configのようなコンフィグレーション配列であることをお勧めします。
  • コンストラクタの最後に親の実装を呼び出してください。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public method

定義先: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

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

  • ゲッターで定義されたプロパティ:ゲッターの結果を返します。
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返します。

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

参照 __set()

public mixed __get ( $name )
$name 文字列

プロパティ名

戻り値 mixed

プロパティ値またはビヘイビアのプロパティの値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 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を返します。

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

こちらも参照してください https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name 文字列

プロパティ名またはイベント名

戻り値 ブール値

指定されたプロパティが設定されているかどうか

                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" という名前のビヘイビアをアタッチします。
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定します。

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

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

public void __set ( $name, $value )
$name 文字列

プロパティ名またはイベント名

$value mixed

プロパティの値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 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に設定します。

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

こちらも参照してください https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name 文字列

プロパティ名

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

            
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()に渡されるオブジェクト設定配列。
戻り値 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 array

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

                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 ( )
戻り値 array

ビヘイビアの設定。

                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 ブール値

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors ブール値

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 ブール値

プロパティを読み取ることができるかどうか

                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 ブール値

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors ブール値

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 ブール値

プロパティに書き込みができるかどうか

                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 ( )
戻り値 文字列

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

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

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

このメソッドは、フォールバック言語メッセージ検索のためのyii\db\Queryオブジェクトを構築します。

通常、loadMessagesFromDb() から呼び出されます。

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

protected yii\db\Query createFallbackQuery ( $category, $language, $fallbackLanguage )
$category 文字列

メッセージカテゴリ

$language 文字列

最初に要求された言語

$fallbackLanguage 文字列

ターゲットのフォールバック言語

                protected function createFallbackQuery($category, $language, $fallbackLanguage)
{
    return (new Query())->select(['message' => 't1.message', 'translation' => 't2.translation'])
        ->from(['t1' => $this->sourceMessageTable, 't2' => $this->messageTable])
        ->where([
            't1.id' => new Expression('[[t2.id]]'),
            't1.category' => $category,
            't2.language' => $fallbackLanguage,
        ])->andWhere([
            'NOT IN', 't2.id', (new Query())->select('[[id]]')->from($this->messageTable)->where(['language' => $language]),
        ]);
}

            
detachBehavior() public メソッド

定義場所: yii\base\Component::detachBehavior()

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

ビヘイビアの yii\base\Behavior::detach() メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name 文字列

ビヘイビアの名前。

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

            
getBehavior() public メソッド

定義場所: yii\base\Component::getBehavior()

名前付きビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name 文字列

ビヘイビア名

戻り値 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 ( )
戻り値 yii\base\Behavior[]

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

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

            
hasEventHandlers() public メソッド

定義場所: yii\base\Component::hasEventHandlers()

名前付きイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name 文字列

イベント名

戻り値 ブール値

イベントにハンドラがアタッチされているかどうか。

                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 ブール値

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

戻り値 ブール値

メソッドが定義されているかどうか

                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 ブール値

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors ブール値

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 ブール値

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() publicメソッド

DbMessageSourceコンポーネントを初期化します。

このメソッドは、$db プロパティを初期化し、有効なDB接続を参照するようにします。設定された$cache コンポーネントも初期化されます。

public void init ( )
例外 yii\base\InvalidConfigException

$dbが無効であるか、$cacheが無効な場合。

                public function init()
{
    parent::init();
    $this->db = Instance::ensure($this->db, Connection::className());
    if ($this->enableCaching) {
        $this->cache = Instance::ensure($this->cache, 'yii\caching\CacheInterface');
    }
}

            
loadMessages() protectedメソッド

指定された言語とカテゴリのメッセージ翻訳を読み込みます。

en-USなどの特定のロケールコードの翻訳が見つからない場合、より一般的なenを試みます。

protected array loadMessages ( $category, $language )
$category 文字列

メッセージカテゴリ

$language 文字列

ターゲット言語

戻り値 array

読み込まれたメッセージ。キーは元のメッセージ、値は翻訳されたメッセージです。

                protected function loadMessages($category, $language)
{
    if ($this->enableCaching) {
        $key = [
            __CLASS__,
            $category,
            $language,
        ];
        $messages = $this->cache->get($key);
        if ($messages === false) {
            $messages = $this->loadMessagesFromDb($category, $language);
            $this->cache->set($key, $messages, $this->cachingDuration);
        }
        return $messages;
    }
    return $this->loadMessagesFromDb($category, $language);
}

            
loadMessagesFromDb() protectedメソッド

データベースからメッセージを読み込みます。

データベース内のメッセージの保存方法をカスタマイズするために、このメソッドをオーバーライドできます。

protected array loadMessagesFromDb ( $category, $language )
$category 文字列

メッセージカテゴリ。

$language 文字列

ターゲット言語。

戻り値 array

データベースから読み込まれたメッセージ。

                protected function loadMessagesFromDb($category, $language)
{
    $mainQuery = (new Query())->select(['message' => 't1.message', 'translation' => 't2.translation'])
        ->from(['t1' => $this->sourceMessageTable, 't2' => $this->messageTable])
        ->where([
            't1.id' => new Expression('[[t2.id]]'),
            't1.category' => $category,
            't2.language' => $language,
        ]);
    $fallbackLanguage = substr($language, 0, 2);
    $fallbackSourceLanguage = substr($this->sourceLanguage, 0, 2);
    if ($fallbackLanguage !== $language) {
        $mainQuery->union($this->createFallbackQuery($category, $language, $fallbackLanguage), true);
    } elseif ($language === $fallbackSourceLanguage) {
        $mainQuery->union($this->createFallbackQuery($category, $language, $fallbackSourceLanguage), true);
    }
    $messages = $mainQuery->createCommand($this->db)->queryAll();
    return ArrayHelper::map($messages, 'message', 'translation');
}

            
off() publicメソッド

定義先: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドはon()の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードと一致するプレーン名で登録されたハンドラーは残ります。

on()も参照してください。

public boolean off ( $name, $handler null )
$name 文字列

イベント名

$handler callable|null

削除するイベントハンドラー。nullの場合、指定されたイベントにアタッチされているすべてのハンドラーが削除されます。

戻り値 ブール値

ハンドラーが見つかり、デタッチされた場合

                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 ブール値

既存のハンドラーリストの最後に新しいイベントハンドラーを追加するかどうか。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]);
    }
}

            
translate() publicメソッド

定義先: yii\i18n\MessageSource::translate()

メッセージを指定された言語に翻訳します。

$forceTranslationがtrueでない限り、ターゲット言語がソース言語と同じである場合、メッセージは翻訳されません。

翻訳が見つからない場合、missingTranslationイベントがトリガーされます。

public string|boolean translate ( $category, $message, $language )
$category 文字列

メッセージカテゴリ

$message 文字列

翻訳するメッセージ

$language 文字列

ターゲット言語

戻り値 string|boolean

翻訳されたメッセージ、または翻訳が見つからなかったか、必要ない場合にfalse

                public function translate($category, $message, $language)
{
    if ($this->forceTranslation || $language !== $this->sourceLanguage) {
        return $this->translateMessage($category, $message, $language);
    }
    return false;
}

            
translateMessage() protectedメソッド

定義先: yii\i18n\MessageSource::translateMessage()

指定されたメッセージを翻訳します。

メッセージが見つからない場合、missingTranslationイベントがトリガーされます。イベントハンドラーがある場合、フォールバック翻訳を提供できます。フォールバック翻訳が提供されない場合、このメソッドはfalseを返します。

protected string|boolean translateMessage ( $category, $message, $language )
$category 文字列

メッセージが属するカテゴリ。

$message 文字列

翻訳するメッセージ。

$language 文字列

ターゲット言語。

戻り値 string|boolean

翻訳されたメッセージ、または翻訳が見つからない場合にfalse。

                protected function translateMessage($category, $message, $language)
{
    $key = $language . '/' . $category;
    if (!isset($this->_messages[$key])) {
        $this->_messages[$key] = $this->loadMessages($category, $language);
    }
    if (isset($this->_messages[$key][$message]) && $this->_messages[$key][$message] !== '') {
        return $this->_messages[$key][$message];
    } elseif ($this->hasEventHandlers(self::EVENT_MISSING_TRANSLATION)) {
        $event = new MissingTranslationEvent([
            'category' => $category,
            'message' => $message,
            'language' => $language,
        ]);
        $this->trigger(self::EVENT_MISSING_TRANSLATION, $event);
        if ($event->translatedMessage !== null) {
            return $this->_messages[$key][$message] = $event->translatedMessage;
        }
    }
    return $this->_messages[$key][$message] = false;
}

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