0 フォロワー

クラス yii\i18n\PhpMessageSource

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

PhpMessageSourceは、翻訳済みのメッセージをPHPスクリプトに保存するメッセージソースを表します。

PhpMessageSourceは、メッセージの翻訳をPHP配列を使用して保持します。

  • 各PHPスクリプトには、特定の言語と単一のメッセージカテゴリのメッセージ翻訳を保存する1つの配列が含まれています。
  • 各PHPスクリプトは、「$basePath/LanguageID/CategoryName.php」という名前のファイルとして保存されます。
  • 各PHPスクリプト内では、メッセージの翻訳は次のようない配列として返されます。
return [
    'original message 1' => 'translated message 1',
    'original message 2' => 'translated message 2',
];

$fileMapを使用して、カテゴリ名とファイル名の関連付けをカスタマイズできます。

公開プロパティ

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

プロパティ 説明 定義元
$basePath string すべての翻訳済みメッセージの基本パス。 yii\i18n\PhpMessageSource
$behaviors yii\base\Behavior[][] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$fileMap array メッセージカテゴリと対応するメッセージファイルパスの間のマッピング。 yii\i18n\PhpMessageSource
$forceTranslation boolean ソース言語とターゲット言語が同じ場合にメッセージの翻訳を強制するかどうか。 yii\i18n\MessageSource
$sourceLanguage string|null 元のメッセージの言語。 yii\i18n\MessageSource

公開メソッド

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

メソッド 説明 定義元
__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() このコンポーネントを初期化します。 yii\i18n\MessageSource
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
translate() メッセージを指定された言語に翻訳します。 yii\i18n\MessageSource
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
getMessageFilePath() 指定された言語とカテゴリのメッセージファイルパスを返します。 yii\i18n\PhpMessageSource
loadFallbackMessages() このメソッドは通常、loadMessages()によって、言語のフォールバックメッセージを読み込むために呼び出されます。 yii\i18n\PhpMessageSource
loadMessages() 指定された$languageと$categoryのメッセージ翻訳を読み込みます。 yii\i18n\PhpMessageSource
loadMessagesFromFile() 指定された言語とカテゴリのメッセージ翻訳を読み込みます。ファイルが存在しない場合はnullを返します。 yii\i18n\PhpMessageSource
translateMessage() 指定されたメッセージを翻訳します。 yii\i18n\MessageSource

イベント

継承されたイベントを非表示

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

プロパティの詳細

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

$basePath public プロパティ

すべての翻訳済みメッセージのベースパス。デフォルトは '@app/messages' です。

public string $basePath '@app/messages'
$fileMap public プロパティ

メッセージカテゴリと対応するメッセージファイルパスのマッピング。$basePath を基準とした相対パスです。例えば、

[
    'core' => 'core.php',
    'ext' => 'extensions.php',
]
public array $fileMap null

メソッドの詳細

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

__call() public メソッド

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

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

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

これはPHPのマジックメソッドであり、未知のメソッドが呼び出された際に暗黙的に呼び出されるため、直接呼び出すべきではありません。

public mixed __call ( $name, $params )
$name string

メソッド名

$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 メソッド

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

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

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

            
__get() public メソッド

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

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

このメソッドは、以下の順番でチェックを行い、それに応じて動作します。

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

これはPHPのマジックメソッドであり、`$value = $component->property;` を実行した際に暗黙的に呼び出されるため、直接呼び出すべきではありません。

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 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 string

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

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

これはPHPのマジックメソッドであり、`$component->property = $value;` を実行した際に暗黙的に呼び出されるため、直接呼び出すべきではありません。

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

public void __set ( $name, $value )
$name string

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

$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 string

プロパティ名

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

ビヘイビアの名前。

$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 string

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 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 string

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

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

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

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

            
detachBehavior() publicメソッド

定義位置: yii\base\Component::detachBehavior()

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

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

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

戻り値 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 string

ビヘイビア名

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

            
getMessageFilePath() protectedメソッド

指定された言語とカテゴリのメッセージファイルパスを返します。

protected string getMessageFilePath ( $category, $language )
$category string

メッセージカテゴリ

$language string

ターゲット言語

戻り値 string

メッセージファイルへのパス

                protected function getMessageFilePath($category, $language)
{
    $language = (string) $language;
    if ($language !== '' && !preg_match('/^[a-z0-9_-]+$/i', $language)) {
        throw new InvalidArgumentException(sprintf('Invalid language code: "%s".', $language));
    }
    $messageFile = Yii::getAlias($this->basePath) . "/$language/";
    if (isset($this->fileMap[$category])) {
        $messageFile .= $this->fileMap[$category];
    } else {
        $messageFile .= str_replace('\\', '/', $category) . '.php';
    }
    return $messageFile;
}

            
hasEventHandlers() publicメソッド

定義済み: yii\base\Component::hasEventHandlers()

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

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 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 string

プロパティ名

$checkBehaviors boolean

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

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

このコンポーネントに対してプロパティが定義されているかどうかを示す値を返します。

プロパティは、以下の場合に定義されています。

  • クラスが指定された名前と関連付けられたgetterまたはsetterメソッドを持つ場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバ変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアが指定された名前のプロパティを持つ場合($checkBehaviorsがtrueの場合)。

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
init() publicメソッド

定義済み: yii\i18n\MessageSource::init()

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

public void init ( )

                public function init()
{
    parent::init();
    if ($this->sourceLanguage === null) {
        $this->sourceLanguage = Yii::$app->sourceLanguage;
    }
}

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

このメソッドは通常、loadMessages()によって、言語のフォールバックメッセージを読み込むために呼び出されます。

このメソッドは、$fallbackLanguageについて$categoryのメッセージを読み込み、$messages配列に追加しようとします。

protected array loadFallbackMessages ( $category, $fallbackLanguage, $messages, $originalMessageFile )
$category string

メッセージカテゴリ

$fallbackLanguage string

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

$messages array

以前にロードされた翻訳メッセージの配列。キーは元のメッセージ、値は翻訳されたメッセージです。

$originalMessageFile string

メッセージを含むファイルへのパス。翻訳が見つからない場合にエラーメッセージをログに記録するために使用されます。

戻り値 array

ロードされたメッセージ。キーは元のメッセージ、値は翻訳されたメッセージです。

                protected function loadFallbackMessages($category, $fallbackLanguage, $messages, $originalMessageFile)
{
    $fallbackMessageFile = $this->getMessageFilePath($category, $fallbackLanguage);
    $fallbackMessages = $this->loadMessagesFromFile($fallbackMessageFile);
    if (
        $messages === null && $fallbackMessages === null
        && $fallbackLanguage !== $this->sourceLanguage
        && strpos($this->sourceLanguage, $fallbackLanguage) !== 0
    ) {
        Yii::error("The message file for category '$category' does not exist: $originalMessageFile "
            . "Fallback file does not exist as well: $fallbackMessageFile", __METHOD__);
    } elseif (empty($messages)) {
        return $fallbackMessages;
    } elseif (!empty($fallbackMessages)) {
        foreach ($fallbackMessages as $key => $value) {
            if (!empty($value) && empty($messages[$key])) {
                $messages[$key] = $value;
            }
        }
    }
    return (array) $messages;
}

            
loadMessages() protectedメソッド

指定された$languageと$categoryのメッセージ翻訳を読み込みます。

en-USなどの特定のロケールコードの翻訳が見つからない場合、より一般的なenを試みます。両方が存在する場合、en-USのメッセージがenの上にマージされます。loadFallbackMessages()を参照してください。$languageが$sourceLanguageより詳細度が低い場合、このメソッドは$sourceLanguageのメッセージのロードを試みます。例:$sourceLanguageen-GB、$languageがenの場合、このメソッドはenのメッセージをロードし、en-GBの上にマージします。

参照

protected array loadMessages ( $category, $language )
$category string

メッセージカテゴリ

$language string

ターゲット言語

戻り値 array

ロードされたメッセージ。キーは元のメッセージ、値は翻訳されたメッセージです。

                protected function loadMessages($category, $language)
{
    $messageFile = $this->getMessageFilePath($category, $language);
    $messages = $this->loadMessagesFromFile($messageFile);
    $fallbackLanguage = substr((string)$language, 0, 2);
    $fallbackSourceLanguage = substr($this->sourceLanguage, 0, 2);
    if ($fallbackLanguage !== '' && $language !== $fallbackLanguage) {
        $messages = $this->loadFallbackMessages($category, $fallbackLanguage, $messages, $messageFile);
    } elseif ($fallbackSourceLanguage !== '' && $language === $fallbackSourceLanguage) {
        $messages = $this->loadFallbackMessages($category, $this->sourceLanguage, $messages, $messageFile);
    } elseif ($messages === null) {
        Yii::warning("The message file for category '$category' does not exist: $messageFile", __METHOD__);
    }
    return (array) $messages;
}

            
loadMessagesFromFile() protectedメソッド

指定された言語とカテゴリのメッセージ翻訳を読み込みます。ファイルが存在しない場合はnullを返します。

protected array|null loadMessagesFromFile ( $messageFile )
$messageFile string

メッセージファイルへのパス

戻り値 array|null

メッセージの配列、またはファイルが見つからない場合はnull

                protected function loadMessagesFromFile($messageFile)
{
    if (is_file($messageFile)) {
        $messages = include $messageFile;
        if (!is_array($messages)) {
            $messages = [];
        }
        return $messages;
    }
    return null;
}

            
off() publicメソッド

定義済み: yii\base\Component::off()

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

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

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

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

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

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

戻り値 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 string

イベント名

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

            
translate() publicメソッド

定義済み: yii\i18n\MessageSource::translate()

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

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

翻訳が見つからない場合、missingTranslationイベントが発生します。

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

メッセージカテゴリ

$message string

翻訳するメッセージ

$language string

ターゲット言語

戻り値 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 string

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

$message string

翻訳するメッセージ。

$language string

ターゲット言語。

戻り値 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 string

イベント名

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