クラス yii\base\Behavior
Behaviorは、すべてのビヘイビアクラスの基底クラスです。
ビヘイビアは、既存のコンポーネントのコードを修正せずにその機能を拡張するために使用できます。特に、自身のメソッドとプロパティをコンポーネントに「注入」し、コンポーネントを介して直接アクセスできるようにできます。また、コンポーネントでトリガーされたイベントに応答することで、通常のコード実行をインターセプトできます。
Behaviorに関する詳細および使用方法については、ビヘイビアに関するガイド記事を参照してください。
パブリックプロパティ
プロパティ | 型 | 説明 | 定義元 |
---|---|---|---|
$owner | yii\base\Component|null | このビヘイビアのオーナー | yii\base\Behavior |
パブリックメソッド
メソッド | 説明 | 定義元 |
---|---|---|
__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 |
attach() | ビヘイビアオブジェクトをコンポーネントにアタッチします。 | yii\base\Behavior |
canGetProperty() | プロパティが読み取り可能かどうかを示す値を返します。 | yii\base\BaseObject |
canSetProperty() | プロパティを設定可能かどうかを示す値を返します。 | yii\base\BaseObject |
className() | このクラスの完全修飾名を返します。 | yii\base\BaseObject |
detach() | ビヘイビアオブジェクトをコンポーネントからデタッチします。 | yii\base\Behavior |
events() | $owner のイベントのイベントハンドラを宣言します。 | yii\base\Behavior |
hasMethod() | メソッドが定義されているかどうかを示す値を返します。 | yii\base\BaseObject |
hasProperty() | プロパティが定義されているかどうかを示す値を返します。 | yii\base\BaseObject |
init() | オブジェクトを初期化します。 | yii\base\BaseObject |
プロパティの詳細
メソッドの詳細
定義元: 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()");
}
定義元: 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();
}
定義元: yii\base\BaseObject::__get()
オブジェクトプロパティの値を返します。
このメソッドは、$value = $object->property;
を実行する際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
関連項目 __set()。
public mixed __get ( $name ) | ||
$name | string |
$name |
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);
}
定義元: yii\base\BaseObject::__isset()
プロパティが設定されているか、つまり定義されていてnullでないかを確認します。
このメソッドは、isset($object->property)
を実行する際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
プロパティが定義されていない場合は、false が返されることに注意してください。
public boolean __isset ( $name ) | ||
$name | string |
$name |
return | プロパティ名またはイベント名 |
boolean |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
定義元: yii\base\BaseObject::__set()
オブジェクトプロパティの値を設定します。
このメソッドは、$object->property = $value;
を実行する際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
関連項目 __get()。
public void __set ( $name, $value ) | ||
$name | string |
$name |
$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);
}
}
定義元: yii\base\BaseObject::__unset()
オブジェクトプロパティをnullに設定します。
このメソッドは、unset($object->property)
を実行する際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
プロパティが定義されていない場合、このメソッドは何もしないことに注意してください。 プロパティが読み取り専用の場合、例外がスローされます。
public void __unset ( $name ) | ||
$name | string |
$name |
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);
}
}
ビヘイビアオブジェクトをコンポーネントにアタッチします。
デフォルトの実装では、$owner プロパティを設定し、events() で宣言されているイベントハンドラをアタッチします。このメソッドをオーバーライドする場合は、必ず親の実装を呼び出してください。
public void attach ( $owner ) | ||
$owner | $owner |
このビヘイビアがアタッチされるコンポーネント。 |
public function attach($owner)
{
$this->owner = $owner;
foreach ($this->events() as $event => $handler) {
$this->_attachedEvents[$event] = $handler;
$owner->on($event, is_string($handler) ? [$this, $handler] : $handler);
}
}
定義元: yii\base\BaseObject::canGetProperty()
プロパティが読み取り可能かどうかを示す値を返します。
プロパティは、次の場合に読み取り可能になります。
- クラスに指定された名前に関連付けられたgetterメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
- クラスに指定された名前のメンバ変数がある場合(
$checkVars
が true の場合)。
関連項目 canSetProperty()。
public boolean canGetProperty ( $name, $checkVars = true ) | ||
$name | string |
$name |
$checkVars | プロパティ名またはイベント名 |
メンバ変数をプロパティとして扱うかどうか |
return | プロパティ名またはイベント名 |
プロパティを読み取ることができるかどうか |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
定義元: yii\base\BaseObject::canSetProperty()
プロパティを設定可能かどうかを示す値を返します。
プロパティは、次の場合に書き込み可能になります。
- クラスに指定された名前に関連付けられたsetterメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
- クラスに指定された名前のメンバ変数がある場合(
$checkVars
が true の場合)。
関連項目 canGetProperty()。
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
$name |
$checkVars | プロパティ名またはイベント名 |
メンバ変数をプロパティとして扱うかどうか |
return | プロパティ名またはイベント名 |
プロパティを書き込むことができるかどうか |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
::class
を使用してください。
定義元: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
public static string className ( ) | ||
return | string |
このクラスの完全修飾名。 |
---|
public static function className()
{
return get_called_class();
}
ビヘイビアオブジェクトをコンポーネントからデタッチします。
デフォルトの実装では、$ownerプロパティをunsetし、events()で宣言されたイベントハンドラをデタッチします。このメソッドをオーバーライドする場合は、必ず親の実装を呼び出してください。
public void detach ( ) |
public function detach()
{
if ($this->owner) {
foreach ($this->_attachedEvents as $event => $handler) {
$this->owner->off($event, is_string($handler) ? [$this, $handler] : $handler);
}
$this->_attachedEvents = [];
$this->owner = null;
}
}
$owner のイベントのイベントハンドラを宣言します。
子クラスは、$ownerコンポーネントのイベントにアタッチするPHPコールバックを宣言するために、このメソッドをオーバーライドできます。
コールバックは、ビヘイビアがオーナーにアタッチされると$ownerのイベントにアタッチされ、ビヘイビアがコンポーネントからデタッチされるとイベントからデタッチされます。
コールバックは、以下のいずれかになります。
- このビヘイビアのメソッド:
'handleClick'
、[$this, 'handleClick']
と同等 - オブジェクトメソッド:
[$object, 'handleClick']
- 静的メソッド:
['Page', 'handleClick']
- 無名関数:
function ($event) { ... }
以下は例です。
[
Model::EVENT_BEFORE_VALIDATE => 'myBeforeValidate',
Model::EVENT_AFTER_VALIDATE => 'myAfterValidate',
]
public array events ( ) | ||
return | array |
イベント(配列キー)と対応するイベントハンドラメソッド(配列値)。 |
---|
public function events()
{
return [];
}
定義元: yii\base\BaseObject::hasMethod()
メソッドが定義されているかどうかを示す値を返します。
デフォルトの実装は、PHP関数method_exists()
の呼び出しです。PHPのマジックメソッド__call()
を実装した場合は、このメソッドをオーバーライドできます。
public boolean hasMethod ( $name ) | ||
$name | string |
メソッド名 |
return | プロパティ名またはイベント名 |
メソッドが定義されているかどうか |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
定義元: yii\base\BaseObject::hasProperty()
プロパティが定義されているかどうかを示す値を返します。
プロパティは、以下の場合に定義されます。
- クラスが指定された名前に関連付けられたgetterまたはsetterメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
- クラスに指定された名前のメンバ変数がある場合(
$checkVars
が true の場合)。
参照
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
$name |
$checkVars | プロパティ名またはイベント名 |
メンバ変数をプロパティとして扱うかどうか |
return | プロパティ名またはイベント名 |
プロパティが定義されているかどうか |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
public void init ( ) |
public function init()
{
}
サインアップまたはログインしてコメントしてください。