0 フォロワー

クラス yii\base\WidgetEvent

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

WidgetEvent は、ウィジェットイベントに使用されるイベントパラメータを表します。

$isValid プロパティを設定することで、ウィジェットの実行を継続するかどうかを制御できます。

公開プロパティ

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

プロパティ タイプ 説明 定義元
$data mixed イベントハンドラをアタッチする際に yii\base\Component::on() に渡されるデータ。 yii\base\Event
$handled boolean イベントが処理されたかどうか。 yii\base\Event
$isValid boolean ウィジェットの実行を継続するかどうか。 yii\base\WidgetEvent
$name string イベント名。 yii\base\Event
$result mixed ウィジェットの結果。 yii\base\WidgetEvent
$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 公開プロパティ

ウィジェットの実行を継続するかどうか。yii\base\Widget::EVENT_BEFORE_RUN のイベントハンドラは、このプロパティを設定して現在のウィジェットの実行を継続するかどうかを決定できます。

public boolean $isValid true
$result 公開プロパティ

ウィジェットの結果。イベントハンドラはこのプロパティを変更して、ウィジェットの結果を変更できます。

public mixed $result null

メソッドの詳細

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

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

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

プロパティが定義されるのは、次のいずれかの場合です。

  • クラスが、指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスが、指定された名前のメンバー変数を持っている($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;
            }
        }
    }
}