yii2 behavior 使用及其调用方式

yii2的Behavior 其实就是yii中的行为,可以拓展现有类,在不修改现有类的情况下,对类的功能进行扩充。通过将行为绑定到一个类,可以使得类具有行为本身所具有的属性和方法,就好像是类本来就具有的这些属性和功能一样。

使用:

先在根目录里面创建一个文件夹,名字是components,再创建一个文件名为MyBehavior

namespace app\components;

use yii\db\ActiveRecord;
use yii\base\Behavior;

class MyBehavior extends Behavior
{
    // 其它代码

    public function events()
    {
        return [
            ActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate',
        ];
    }

    public function beforeValidate($event)
    {
        // 处理器方法逻辑
        $model = $this->owner;
        $model->content .= '--beforeinsert';
    }
}

调用方式:

  • 静态调用方式:

         静态调用方式,就是在对应的模型里面调用。然后再正常使用模型里面的方法就行了,

use app\components\HelloBehavior;

class Test extends ActiveRecord
{
    public function behaviors()
    {
//        return parent::behaviors(); // TODO: Change the autogenerated stub
        return [
            'hello'=>HelloBehavior::className(),
        ];
    }
}

 

  • 动态调用方式:

       动态调用方式就是在控制器里面使用,new完一个模型之后,在使用attachBehaviors

use app\components\HelloBehavior;

use yii\web\Controller;
use app\models\Test;
use app\components\HelloBehavior;

class TestController extends Controller
{

    public function actionSave(){

        $model = new Test();
        $model->attachBehaviors([
            HelloBehavior::className()
        ]);
        $model->content = 'behavior测试1';
        $model->create_at = date('Y-m-d H:i:s');
        dd( $model->save() );
    }
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值