0 フォロワー

クラス yii\i18n\GettextMoFile

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

GettextMoFile は、MO Gettext メッセージファイルを表します。

このクラスは、PEAR の Michael の Gettext_MO クラスを改変して記述されています。以下のライセンス条項を参照してください。

Copyright (c) 2004-2005, Michael Wallner mike@iworks.at. All rights reserved.

ソースコードとバイナリ形式での再配布と使用は、以下の条件を満たす場合に限り許可されます。

* Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

このソフトウェアは、著作権保持者および貢献者によって「現状のまま」提供され、商品性および特定の目的への適合性に関する暗黙の保証を含め、明示的または黙示的ないかなる保証も行いません。いかなる場合においても、著作権所有者または貢献者は、このソフトウェアの使用から生じる直接的、間接的、偶発的、特別の、懲罰的または結果的な損害(代替品またはサービスの調達、使用の損失、データまたは利益の損失、または事業の中断を含むがこれらに限定されない)について、たとえそのような損害の可能性について知らされていた場合でも、責任を負いません。

公開プロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされているビヘイビアのリスト。 yii\base\Component
$useBigEndian boolean 整数を読み書きする際にビッグエンディアンを使用するかどうか。 yii\i18n\GettextMoFile

公開メソッド

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

メソッド 説明 定義元
__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\base\BaseObject
load() MOファイルからメッセージを読み込みます。 yii\i18n\GettextMoFile
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
save() メッセージをMOファイルに保存します。 yii\i18n\GettextMoFile
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
readBytes() 1つ以上のバイトを読み取ります。 yii\i18n\GettextMoFile
readInteger() 4バイトの整数を読み取ります。 yii\i18n\GettextMoFile
readString() 文字列を読み取ります。 yii\i18n\GettextMoFile
writeBytes() バイトを書き込みます。 yii\i18n\GettextMoFile
writeInteger() 4バイトの整数を書きます。 yii\i18n\GettextMoFile
writeString() 文字列を書き込みます。 yii\i18n\GettextMoFile

プロパティの詳細

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

$useBigEndian public property

整数を読み書きする際にビッグエンディアンを使用するかどうか。

public boolean $useBigEndian false

メソッドの詳細

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

__call() public method

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

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

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

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

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

メソッド名

$params 配列

メソッドパラメータ

戻り値 混合型

メソッドの戻り値

例外 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()

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

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

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

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

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 混合型

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

例外 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 混合型

プロパティ値

例外 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 配列

コンポーネントにアタッチされる動作のリスト

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

動作の設定。

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

            
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()

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

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

  • クラスが指定された名前と関連付けられたゲッターまたはセッターメソッドを持つ場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($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\base\BaseObject::init()

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

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

public void init ( )

                public function init()
{
}

            
load() publicメソッド

MOファイルからメッセージを読み込みます。

public array load ( $filePath, $context )
$filePath string

ファイルパス

$context string

メッセージコンテキスト

戻り値 配列

メッセージ翻訳。配列のキーはソースメッセージ、配列の値は翻訳済みメッセージです: ソースメッセージ => 翻訳済みメッセージ。

例外 yii\base\Exception

MOファイルを読み取れない場合

                public function load($filePath, $context)
{
    if (false === ($fileHandle = @fopen($filePath, 'rb'))) {
        throw new Exception('Unable to read file "' . $filePath . '".');
    }
    if (false === @flock($fileHandle, LOCK_SH)) {
        throw new Exception('Unable to lock file "' . $filePath . '" for reading.');
    }
    // magic
    $array = unpack('c', $this->readBytes($fileHandle, 4));
    $magic = current($array);
    if ($magic == -34) {
        $this->useBigEndian = false;
    } elseif ($magic == -107) {
        $this->useBigEndian = true;
    } else {
        throw new Exception('Invalid MO file: ' . $filePath . ' (magic: ' . $magic . ').');
    }
    // revision
    $revision = $this->readInteger($fileHandle);
    if ($revision !== 0) {
        throw new Exception('Invalid MO file revision: ' . $revision . '.');
    }
    $count = $this->readInteger($fileHandle);
    $sourceOffset = $this->readInteger($fileHandle);
    $targetOffset = $this->readInteger($fileHandle);
    $sourceLengths = [];
    $sourceOffsets = [];
    fseek($fileHandle, $sourceOffset);
    for ($i = 0; $i < $count; ++$i) {
        $sourceLengths[] = $this->readInteger($fileHandle);
        $sourceOffsets[] = $this->readInteger($fileHandle);
    }
    $targetLengths = [];
    $targetOffsets = [];
    fseek($fileHandle, $targetOffset);
    for ($i = 0; $i < $count; ++$i) {
        $targetLengths[] = $this->readInteger($fileHandle);
        $targetOffsets[] = $this->readInteger($fileHandle);
    }
    $messages = [];
    for ($i = 0; $i < $count; ++$i) {
        $id = $this->readString($fileHandle, $sourceLengths[$i], $sourceOffsets[$i]);
        $separatorPosition = strpos((string)$id, chr(4));
        if ((!$context && $separatorPosition === false) || ($context && $separatorPosition !== false && strncmp($id, $context, $separatorPosition) === 0)) {
            if ($separatorPosition !== false) {
                $id = substr($id, $separatorPosition + 1);
            }
            $message = $this->readString($fileHandle, $targetLengths[$i], $targetOffsets[$i]);
            $messages[$id] = $message;
        }
    }
    @flock($fileHandle, LOCK_UN);
    @fclose($fileHandle);
    return $messages;
}

            
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 混合型

イベントが発生したときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されたとき、このデータは 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]);
    }
}

            
readBytes() protectedメソッド

1つ以上のバイトを読み取ります。

protected string readBytes ( $fileHandle, $byteCount 1 )
$fileHandle resource

読み取り元

$byteCount integer

読み取るバイト数

戻り値 string

バイト

                protected function readBytes($fileHandle, $byteCount = 1)
{
    if ($byteCount > 0) {
        return fread($fileHandle, $byteCount);
    }
    return null;
}

            
readInteger() protectedメソッド

4バイトの整数を読み取ります。

protected integer readInteger ( $fileHandle )
$fileHandle resource

読み取り元

戻り値 integer

結果

                protected function readInteger($fileHandle)
{
    $array = unpack($this->useBigEndian ? 'N' : 'V', $this->readBytes($fileHandle, 4));
    return current($array);
}

            
readString() protectedメソッド

文字列を読み取ります。

protected string readString ( $fileHandle, $length, $offset null )
$fileHandle resource

ファイルハンドル

$length integer

文字列の長さ

$offset integer|null

ファイル内の文字列のオフセット。null の場合、現在の位置から読み取ります。

戻り値 string

結果

                protected function readString($fileHandle, $length, $offset = null)
{
    if ($offset !== null) {
        fseek($fileHandle, $offset);
    }
    return $this->readBytes($fileHandle, $length);
}

            
save() publicメソッド

メッセージをMOファイルに保存します。

public void save ( $filePath, $messages )
$filePath string

ファイルパス

$messages 配列

メッセージ翻訳。配列のキーはソースメッセージ、配列の値は翻訳済みメッセージです: ソースメッセージ => 翻訳済みメッセージ。メッセージにコンテキストがある場合、メッセージIDはコンテキストをchr(4)をセパレータとして接頭辞に付ける必要があります。

例外 yii\base\Exception

MOファイルの保存に失敗した場合

                public function save($filePath, $messages)
{
    if (false === ($fileHandle = @fopen($filePath, 'wb'))) {
        throw new Exception('Unable to write file "' . $filePath . '".');
    }
    if (false === @flock($fileHandle, LOCK_EX)) {
        throw new Exception('Unable to lock file "' . $filePath . '" for reading.');
    }
    // magic
    if ($this->useBigEndian) {
        $this->writeBytes($fileHandle, pack('c*', 0x95, 0x04, 0x12, 0xde)); // -107
    } else {
        $this->writeBytes($fileHandle, pack('c*', 0xde, 0x12, 0x04, 0x95)); // -34
    }
    // revision
    $this->writeInteger($fileHandle, 0);
    // message count
    $messageCount = count($messages);
    $this->writeInteger($fileHandle, $messageCount);
    // offset of source message table
    $offset = 28;
    $this->writeInteger($fileHandle, $offset);
    $offset += $messageCount * 8;
    $this->writeInteger($fileHandle, $offset);
    // hashtable size, omitted
    $this->writeInteger($fileHandle, 0);
    $offset += $messageCount * 8;
    $this->writeInteger($fileHandle, $offset);
    // length and offsets for source messages
    foreach (array_keys($messages) as $id) {
        $length = strlen($id);
        $this->writeInteger($fileHandle, $length);
        $this->writeInteger($fileHandle, $offset);
        $offset += $length + 1;
    }
    // length and offsets for target messages
    foreach ($messages as $message) {
        $length = strlen($message);
        $this->writeInteger($fileHandle, $length);
        $this->writeInteger($fileHandle, $offset);
        $offset += $length + 1;
    }
    // source messages
    foreach (array_keys($messages) as $id) {
        $this->writeString($fileHandle, $id);
    }
    // target messages
    foreach ($messages as $message) {
        $this->writeString($fileHandle, $message);
    }
    @flock($fileHandle, LOCK_UN);
    @fclose($fileHandle);
}

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

            
writeBytes() protectedメソッド

バイトを書き込みます。

protected integer writeBytes ( $fileHandle, $bytes )
$fileHandle resource

書き込み先

$bytes string

書き込み対象

戻り値 integer

書き込まれたバイト数

                protected function writeBytes($fileHandle, $bytes)
{
    return fwrite($fileHandle, $bytes);
}

            
writeInteger() protectedメソッド

4バイトの整数を書きます。

protected integer writeInteger ( $fileHandle, $integer )
$fileHandle resource

書き込み先

$integer integer

書き込み対象

戻り値 integer

書き込まれたバイト数

                protected function writeInteger($fileHandle, $integer)
{
    return $this->writeBytes($fileHandle, pack($this->useBigEndian ? 'N' : 'V', (int) $integer));
}

            
writeString() protectedメソッド

文字列を書き込みます。

protected integer writeString ( $fileHandle, $string )
$fileHandle resource

書き込み先

$string string

書き込み対象

戻り値 integer

書き込まれたバイト数

                protected function writeString($fileHandle, $string)
{
    return $this->writeBytes($fileHandle, $string . "\0");
}