行为就是继承yii\base\behavior,可以绑定到任意yii\base\compent实例上,然后这个compent实例就拥有了行为类所具有的属性和方法;
注意:Behavior只能与Component类绑定
可参考 http://www.digpage.com/behavior.html
下面是两个例子:
1、分别定义行为类MyBehavior.PHP和组件类MyBehaviorAttachClass.php
(1)MyBehavior.php
namespace app\models;
use yii\base\Behavior;
?>
<?
class MyBehavior extends Behavior
{
public $propertyTest='this is MyBehavior propertyTest';
public function methodTest()
{
echo 'this is MyBehavior methodTest';
}
}
(2)MyBehaviorAttachClass.php
namespace app\models;
use yii\base\component;
?>
<?
class MyBehaviorAttachClass extends component
{
}
(3)控制器中写个方法,以便演示时调用
public function actionBehavior()
{
$MyBehavior=new MyBehavior;
$MyBehaviorAttachClass=new MyBehaviorAttachClass;
$MyBehaviorAttachClass->attachBehavior('MyBehavior',$MyBehavior);
echo $MyBehaviorAttachClass->propertyTest;
echo $MyBehaviorAttachClass->methodTest();
}
Controler和Model已经继承 Component,可以直接使用behavior
在Controler中
$MyBehavior=new MyBehavior();
$this->attachBehavior('myb1',$MyBehavior);
echo $this->propertyTest;
echo "<br>";
echo $this->methodTest();