Class yii\base\Component

所有类 | 方法

继承yii\base\Component » yii\base\Object
可用自版本2.0

组件的基类,它实现了属性,事件和行为特征。

组件提供了事件和行为特性,除了财产功能,实现父类的对象.

事件是一种“注入”自定义代码在某些地方到现有的代码。例如,一个对象可以触发一个“添加”事件发表看法时用户添加了一个注释。我们可以编写自定义代码,将它附加到这个事件,当事件被触发时(即添加评论),我们将执行自定义代码。

一个事件是由一个名字标识,在它被定义的类中应该是惟一的。事件名称是区分大小写的。

一个或多个PHP回调,称为事件处理程序,可以被附加到一个事件。你可以叫触发()来提高一个事件。事件时,事件处理程序会自动调用它们的顺序。

将事件处理程序附加到事件, call on():

$post->on('update', function ($event) {
    // send email notification
});

在上面,一个匿名函数附加到事件的“更新”。你可以附上以下类型的事件处理程序:

  • 匿名函数: function ($event) { ... }
  • 对象方法: [$object, 'handleAdd']
  • 静态类方法: ['Page', 'handleAdd']
  • 全局函数: 'handleAdd'

一个事件处理程序的签名应该像下面:

function foo($event)

$event是一个yii\base\Event与事件相关联的对象包括参数

你也可以附加一个事件处理程序,当配置一个组件与一个配置阵列。语法就像以下:

[
    'on add' => function ($event) { ... }
]

on add代表将事件添加事件。

有时,你可能想要把额外的数据与一个事件处理程序,当你将它附加到一个事件,然后调用处理程序时访问它。你可以这样做

$post->on('update', function ($event) {
    // the data can be accessed via $event->data
}, $data);

yii\base\Behavior是一个实例的行为或其子类。一个组件可以与一个或多个附加行为。当一个行为附加到一个组件,它的公共属性和方法直接可以通过访问组件,如果组件拥有这些属性和方法

附加组件的行为,宣布在behaviors(),或显式地调用attachBehavior()。行为中声明的behaviors()会自动连接到相应的组件。

还可以附加一个行为一个组件在配置配置阵列。语法就像以下:

[
    'as tree' => [
        'class' => 'Tree',
    ],
]

 

as tree附加行为叫tree,和数组将被传递给Yii:createObject()来创建对象的行为

更多细节和使用信息组件,请参阅指南文章组件.

公共方法

隐藏继承方法

方法描述定义在
__call()调用指定的方法而不是一个类方法.yii\base\Component
__clone()调用此方法后,对象是由克隆现有的一个.yii\base\Component
__get()返回一个组件属性的值.yii\base\Component
__isset()检查如果属性设置,即定义和not 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
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
off()从该组件分离现有的事件处理程序。yii\base\Component
on()附加一个事件的事件处理程序。yii\base\Component
trigger()触发一个事件.yii\base\Component

方法详情

__call() public 方法

调用指定的方法而不是一个类方法.

该方法将检查如果有任何附加行为如果可用的命名方法和将执行它。

不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用一个未知的方法被调用。

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

方法名

$paramsarray

方法 参数

returnmixed

该方法返回值

throwsyii\base\UnknownMethodException

当调用未知的方法

__clone() public 方法

调用此方法后,对象是由克隆现有的一个.

它删除所有的行为,因为他们是在旧的对象.

public void __clone ( )

__get() public 方法

返回一个组件属性的值

该方法将按照以下顺序检查并采取相应行动:

  • 属性定义为一个getter:返回getter结果
  • 一个属性的行为:返回属性值的行为

不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 $value = $component->property;.

参见 __set().

public mixed __get ( $name )
$namestring

属性名

returnmixed

属性值或一个行为的财产的价值

throwsyii\base\UnknownPropertyException

如果没有定义的属性

throwsyii\base\InvalidCallException

如果只写属性.

__isset() public 方法

检查如果属性设置,即定义和not null.

该方法将按照以下顺序检查并采取相应行动:

  • setter属性定义为:返回属性设置
  • 一个属性的行为:返回属性设置
  • 为非现有属性返回false

不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 isset($component->property).

参见 http://php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$namestring

属性名或事件的名称

returnboolean

是否指定的属性设置

__set() public 方法

设置组件的属性的值.

该方法将按照以下顺序检查并采取相应行动:

  • setter属性定义为:设置属性值
  • “xyz”的格式的一个事件:事件处理程序附加到“xyz”
  • 格式的行为“xyz”:把行为命名为“xyz”
  • 一个属性的行为:设置属性值的行为

不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行$component->property = $value;.

参见 __get().

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

属性名或事件的名称

$valuemixed

属性值

throwsyii\base\UnknownPropertyException

如果没有定义的属性

throwsyii\base\InvalidCallException

如果属性是只读的

__unset() public 方法

一个组件属性设置为null.

该方法将按照以下顺序检查并采取相应行动:

  • setter属性定义为:设置属性值为null
  • 一个属性的行为:设置属性值为null

不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 unset($component->property).

参见 http://php.net/manual/en/function.unset.php.

public void __unset ( $name )
$namestring

属性名

throwsyii\base\InvalidCallException

如果属性是只读的.

attachBehavior() public 方法

高度该组件的行为.

该方法将创建对象的行为基于给定的配置。之后,行为对象将被附加到这个组件通过调用yii\base\Behavior::attach() 方法。

参见 detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$namestring

的名字的行为。

$behaviorstring|array|yii\base\Behavior

配置的行为。这可以是下列之一:

  • yii\base\Behavior object
  • 一个字符串指定类的行为
  • 一个配置对象数组,将被传递给Yii::createObject()来创建对象的行为。
returnyii\base\Behavior

行为的对象

attachBehaviors() public 方法

高度的行为列表组件。

每个行为都是被它的名字,应该yii\base\Behavior对象,一个字符串指定行为类,或配置数组创建的行为。

参见 attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviorsarray

被附加到组件的行为列表

behaviors() public 方法

返回一个列表的行为,这个组件应该像

子类可以重写这个方法来指定他们想表现的行为.

这个方法的返回值应该是一个数组的行为或配置索引的对象行为的名字。行为的配置可以是一个字符串数组指定行为类或以下的结构:

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

请注意,一个行为类必须扩展基数yii \ \行为。行为可以连接使用一个名称或匿名。当一个名称用作数组键时,使用这个名字,稍后可以检索行为使用getBehavior()或使用detachBehavior分离()。匿名的行为不能被检索或分离。

行为中声明该方法将自动连接到组件(按需).

public array behaviors ( )
returnarray

配置的行为.

canGetProperty() public 方法

返回一个值指示是否可以读取属性.

一个属性可以读取:

  • 相关的类都有一个getter方法指定的名称(在本例中,属性名称不区分大小写);
  • 指定名称的类都有一个成员变量(当$checkVars 是true)
  • 的附加行为可读属性名字(当 $checkBehaviors是true)

参见 canSetProperty().

public boolean canGetProperty ( $name, $checkVars = true, $checkBehaviors = true )
$namestring

属性名

$checkVarsboolean

将成员变量是否为属性

$checkBehaviorsboolean

治疗行为的属性是否为该组件的属性

returnboolean

该属性是否可读

canSetProperty() public 方法

返回一个值指示是否可以设置一个属性

一个属性可以写:

  • t他类有一个相关联的setter方法指定的名称(在本例中,属性名称不区分大小写);
  • 他与指定的类都有一个成员变量名称(when $checkVars is true);
  • 附加行为有一个可写属性的名字 (when $checkBehaviors is true).

参见 canGetProperty().

public boolean canSetProperty ( $name, $checkVars = true, $checkBehaviors = true )
$namestring

属性名

$checkVarsboolean

将成员变量是否为属性

$checkBehaviorsboolean

治疗行为的属性是否为该组件的属性

returnboolean

该属性是否可以写

detachBehavior() public 方法

分离组件的行为.

行为的基础yii\base\Behavior::detach()方法将被调用

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

The behavior's name.

returnnull|yii\base\Behavior

分离行为。空如果行为不存在。

detachBehaviors() public 方法

分离所有组件的行为。

public void detachBehaviors ( )

ensureBehaviors() public 方法

确保行为中声明的行为()附加到该组件。

public void ensureBehaviors ( )

getBehavior() public 方法

返回指定对象的行为。

public null|yii\base\Behavior getBehavior ( $name )
$namestring

行为的名称

returnnull|yii\base\Behavior

行为对象,或null如果行为不存在

getBehaviors() public 方法

返回所有行为附加到该组件。

public yii\base\Behavior[] getBehaviors ( )
returnyii\base\Behavior[]

行为附加到该组件的列表

hasEventHandlers() public 方法

返回一个值指示是否有处理程序连接到指定的事件

public boolean hasEventHandlers ( $name )
$namestring

事件名

returnboolean

是否有处理程序附加到事件.

hasMethod() public 方法

返回一个值指示是否定义了一个方法。

如果定义了一个方法:

  • 指定名称的类有一个方法
  • 附加行为具有给定名称的方法 (when $checkBehaviors is true).
public boolean hasMethod ( $name, $checkBehaviors = true )
$namestring

属性名

$checkBehaviorsboolean

治疗行为的方法是否该组件的方法

returnboolean

是否定义的方法

hasProperty() public 方法

返回一个值指示是否为该组件定义属性。

如果定义的属性:

  • 类有一个相关联的getter或setter方法指定的名称 (in this case, property name is case-insensitive);
  • 他与指定的类都有一个成员变量名称(when $checkVars is true);
  • 附加行为有一个属性的名字 (when $checkBehaviors is true).

参见:

public boolean hasProperty ( $name, $checkVars = true, $checkBehaviors = true )
$namestring

属性名

$checkVarsboolean

将成员变量是否为属性

$checkBehaviorsboolean

治疗行为的属性是否为该组件的属性

returnboolean

是否定义的属性

off() public 方法

从该组件分离现有的事件处理程序。

这个方法是相反的 on().

参见 on().

public boolean off ( $name, $handler = null )
$namestring

事件名

$handlercallable

事件处理程序被删除。如果它为空,所有连接到指定的事件处理程序将被删除。

returnboolean

如果找到一个处理程序和分离

on() public 方法

附加一个事件的事件处理程序

事件处理程序必须是一个有效的PHP回调。以下是一些例子:

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件处理程序必须定义以下签名,

function ($event)

在 $event is an yii\base\Event与事件相关联的对象包括参数

参见 off().

public void on ( $name, $handler, $data = null, $append = true )
$namestring

事件名

$handlercallable

The event handler

$datamixed

数据被传递到事件处理程序当事件被触发。当事件处理程序被调用时,该数据可以通过访问 yii\base\Event::$data.

$appendboolean

是否新的事件处理程序附加到现有的处理程序列表。如果错误,新的处理程序将插入到现有的处理程序列表的开始。

trigger() public 方法

触发一个事件。

这种方法表示一个事件的发生。它调用处理程序类级别等事件处理程序。

public void trigger ( $name, yii\base\Event $event = null )
$namestring

事件名

$eventyii\base\Event

事件参数。如果没有设置,默认 yii\base\Event 对象将被创建

转载于:https://my.oschina.net/u/2552765/blog/852482

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值