0 フォロワー

クラス yii\base\ModelEvent

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

ModelEvent は、yii\base\Model イベントに必要なパラメータを表します。

公開プロパティ

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

プロパティ 説明 定義元
$data mixed イベントハンドラをアタッチする際に、yii\base\Component::on() に渡されるデータ。 yii\base\Event
$handled boolean イベントが処理されたかどうか。 yii\base\Event
$isValid boolean モデルが有効な状態かどうか。 yii\base\ModelEvent
$name string イベント名。 yii\base\Event
$sender object|null このイベントの送信者。 yii\base\Event

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない、名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\base\BaseObject
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているか(つまり、定義されており、nullではないか)を確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティを null に設定します。 yii\base\BaseObject
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
hasHandlers() 指定されたクラスレベルのイベントにアタッチされたハンドラがあるかどうかを示す値を返します。 yii\base\Event
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
off() クラスレベルのイベントからイベントハンドラをデタッチします。 yii\base\Event
offAll() 登録されているすべてのクラスレベルのイベントハンドラをデタッチします。 yii\base\Event
on() クラスレベルのイベントにイベントハンドラをアタッチします。 yii\base\Event
trigger() クラスレベルのイベントをトリガーします。 yii\base\Event

プロパティの詳細

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

$isValid 公開プロパティ

モデルが有効な状態かどうか。デフォルトは true です。モデルは、検証または特定のチェックに合格した場合に有効な状態になります。

public boolean $isValid true

メソッドの詳細

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

__call() 公開メソッド

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

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

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

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

メソッド名

$params array

メソッドパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出すとき

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() 公開メソッド

定義元: 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() 公開メソッド

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

オブジェクトプロパティの値を返します。

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

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

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティの値

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (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\BaseObject::__isset()

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

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

プロパティが定義されていない場合は、falseが返されることに注意してください。

参照: https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

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

return boolean

指定されたプロパティが設定されている(nullではない)かどうか。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

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

オブジェクトプロパティの値を設定します。

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

参照: __get()

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

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

$value mixed

プロパティの値

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

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

オブジェクトプロパティを null に設定します。

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

プロパティが定義されていない場合は、このメソッドは何もしないことに注意してください。プロパティが読み取り専用の場合は、例外をスローします。

参照: https://www.php.net/manual/en/function.unset.php

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public メソッド

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

プロパティが読み取り可能かどうかを示す値を返します。

プロパティが読み取り可能である条件は

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

参照: canSetProperty()

public boolean canGetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

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

return boolean

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

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

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

プロパティが設定可能かどうかを示す値を返します。

プロパティが書き込み可能である条件は

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

参照: canGetProperty()

public boolean canSetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

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

return boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

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

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

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

public static string className ( )
return string

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

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

            
hasHandlers() public static メソッド

定義元: yii\base\Event::hasHandlers()

指定されたクラスレベルのイベントにアタッチされたハンドラがあるかどうかを示す値を返します。

このメソッドは、指定されたイベントにハンドラがアタッチされているかどうかを確認するために、すべての親クラスもチェックすることに注意してください。

public static boolean hasHandlers ( $class, $name )
$class string|object

クラスレベルのイベントを指定するオブジェクトまたは完全修飾クラス名。

$name string

イベント名。

return boolean

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

                public static function hasHandlers($class, $name)
{
    if (empty(self::$_eventWildcards) && empty(self::$_events[$name])) {
        return false;
    }
    if (is_object($class)) {
        $class = get_class($class);
    } else {
        $class = ltrim($class, '\\');
    }
    $classes = array_merge(
        [$class],
        class_parents($class, true),
        class_implements($class, true)
    );
    // regular events
    foreach ($classes as $className) {
        if (!empty(self::$_events[$name][$className])) {
            return true;
        }
    }
    // wildcard events
    foreach (self::$_eventWildcards as $nameWildcard => $classHandlers) {
        if (!StringHelper::matchWildcard($nameWildcard, $name, ['escape' => false])) {
            continue;
        }
        foreach ($classHandlers as $classWildcard => $handlers) {
            if (empty($handlers)) {
                continue;
            }
            foreach ($classes as $className) {
                if (StringHelper::matchWildcard($classWildcard, $className, ['escape' => false])) {
                    return true;
                }
            }
        }
    }
    return false;
}

            
hasMethod() public メソッド

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

メソッドが定義されているかどうかを示す値を返します。

デフォルトの実装は、php関数method_exists()の呼び出しです。phpマジックメソッド__call()を実装した場合は、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

return boolean

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

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public メソッド

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

プロパティが定義されているかどうかを示す値を返します。

プロパティが定義されている条件は

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

参照

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

            
init() public メソッド

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

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

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

public void init ( )

                public function init()
{
}

            
off() public static メソッド

定義元: yii\base\Event::off()

クラスレベルのイベントからイベントハンドラをデタッチします。

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

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

参照: on()

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

イベントハンドラーをデタッチする必要がある完全修飾クラス名。

$name string

イベント名。

$handler callable|null

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

return boolean

ハンドラーが見つかり、デタッチされたかどうか。

                public static function off($class, $name, $handler = null)
{
    $class = ltrim($class, '\\');
    if (empty(self::$_events[$name][$class]) && empty(self::$_eventWildcards[$name][$class])) {
        return false;
    }
    if ($handler === null) {
        unset(self::$_events[$name][$class]);
        unset(self::$_eventWildcards[$name][$class]);
        return true;
    }
    // plain event names
    if (isset(self::$_events[$name][$class])) {
        $removed = false;
        foreach (self::$_events[$name][$class] as $i => $event) {
            if ($event[0] === $handler) {
                unset(self::$_events[$name][$class][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            self::$_events[$name][$class] = array_values(self::$_events[$name][$class]);
            return true;
        }
    }
    // wildcard event names
    $removed = false;
    if (isset(self::$_eventWildcards[$name][$class])) {
        foreach (self::$_eventWildcards[$name][$class] as $i => $event) {
            if ($event[0] === $handler) {
                unset(self::$_eventWildcards[$name][$class][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            self::$_eventWildcards[$name][$class] = array_values(self::$_eventWildcards[$name][$class]);
            // remove empty wildcards to save future redundant regex checks :
            if (empty(self::$_eventWildcards[$name][$class])) {
                unset(self::$_eventWildcards[$name][$class]);
                if (empty(self::$_eventWildcards[$name])) {
                    unset(self::$_eventWildcards[$name]);
                }
            }
        }
    }
    return $removed;
}

            
offAll() public static メソッド (バージョン 2.0.10 から利用可能)

定義元: yii\base\Event::offAll()

登録されているすべてのクラスレベルのイベントハンドラをデタッチします。

参照

public static void offAll ( )

                public static function offAll()
{
    self::$_events = [];
    self::$_eventWildcards = [];
}

            
on() public static メソッド

定義元: yii\base\Event::on()

クラスレベルのイベントにイベントハンドラをアタッチします。

クラスレベルのイベントがトリガーされると、そのクラスとすべての親クラスにアタッチされたイベントハンドラーが呼び出されます。

例えば、次のコードは ActiveRecordafterInsert イベントにイベントハンドラーをアタッチします

Event::on(ActiveRecord::class, ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
    Yii::trace(get_class($event->sender) . ' is inserted.');
});

このハンドラーは、ActiveRecord が挿入されるたびに呼び出されます。

2.0.14 以降では、クラス名またはイベント名のいずれかをワイルドカードパターンとして指定できます。

Event::on('app\models\db\*', '*Insert', function ($event) {
    Yii::trace(get_class($event->sender) . ' is inserted.');
});

イベントハンドラーの宣言方法の詳細については、yii\base\Component::on() を参照してください。

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

public static void on ( $class, $name, $handler, $data null, $append true )
$class string

イベントハンドラーをアタッチする必要がある完全修飾クラス名。

$name string

イベント名。

$handler callable

イベントハンドラー。

$data mixed

イベントがトリガーされたときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

新しいイベントハンドラーを既存のハンドラーリストの末尾に追加するかどうか。false の場合、新しいハンドラーは既存のハンドラーリストの先頭に挿入されます。

                public static function on($class, $name, $handler, $data = null, $append = true)
{
    $class = ltrim($class, '\\');
    if (strpos($class, '*') !== false || strpos($name, '*') !== false) {
        if ($append || empty(self::$_eventWildcards[$name][$class])) {
            self::$_eventWildcards[$name][$class][] = [$handler, $data];
        } else {
            array_unshift(self::$_eventWildcards[$name][$class], [$handler, $data]);
        }
        return;
    }
    if ($append || empty(self::$_events[$name][$class])) {
        self::$_events[$name][$class][] = [$handler, $data];
    } else {
        array_unshift(self::$_events[$name][$class], [$handler, $data]);
    }
}

            
trigger() public static メソッド

定義元: yii\base\Event::trigger()

クラスレベルのイベントをトリガーします。

このメソッドは、指定されたクラスとそのすべての親クラスの指定されたイベントにアタッチされたイベントハンドラーを呼び出します。

public static void trigger ( $class, $name, $event null )
$class string|object

クラスレベルのイベントを指定するオブジェクトまたは完全修飾クラス名。

$name string

イベント名。

$event yii\base\Event|null

イベントパラメーター。設定されていない場合、デフォルトの yii\base\Event オブジェクトが作成されます。

                public static function trigger($class, $name, $event = null)
{
    $wildcardEventHandlers = [];
    foreach (self::$_eventWildcards as $nameWildcard => $classHandlers) {
        if (!StringHelper::matchWildcard($nameWildcard, $name)) {
            continue;
        }
        $wildcardEventHandlers = array_merge($wildcardEventHandlers, $classHandlers);
    }
    if (empty(self::$_events[$name]) && empty($wildcardEventHandlers)) {
        return;
    }
    if ($event === null) {
        $event = new static();
    }
    $event->handled = false;
    $event->name = $name;
    if (is_object($class)) {
        if ($event->sender === null) {
            $event->sender = $class;
        }
        $class = get_class($class);
    } else {
        $class = ltrim($class, '\\');
    }
    $classes = array_merge(
        [$class],
        class_parents($class, true),
        class_implements($class, true)
    );
    foreach ($classes as $class) {
        $eventHandlers = [];
        foreach ($wildcardEventHandlers as $classWildcard => $handlers) {
            if (StringHelper::matchWildcard($classWildcard, $class, ['escape' => false])) {
                $eventHandlers = array_merge($eventHandlers, $handlers);
                unset($wildcardEventHandlers[$classWildcard]);
            }
        }
        if (!empty(self::$_events[$name][$class])) {
            $eventHandlers = array_merge($eventHandlers, self::$_events[$name][$class]);
        }
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            if ($event->handled) {
                return;
            }
        }
    }
}