yii2tech/behavior-trait

此包已被弃用且不再维护。未建议替代包。

允许通过内联声明的函数处理事件,这些函数可以通过特质添加。

资助包维护!
klimov-paul
Patreon

安装次数: 251,625

依赖项: 0

建议者: 0

安全性: 0

星标: 18

关注者: 5

分支: 1

开放问题: 0

类型:yii2-extension

1.0.0 2015-12-26 11:11 UTC

This package is auto-updated.

Last update: 2022-01-10 10:38:46 UTC


README

12951949

Yii 2 的行为特质扩展


此扩展提供了一种通过特质添加内联声明的函数来处理事件的能力。

有关许可信息,请查看LICENSE文件。

Latest Stable Version Total Downloads Build Status

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist yii2tech/behavior-trait

或者

"yii2tech/behavior-trait": "*"

将以下内容添加到您的composer.json文件的require部分。

使用方法

此扩展引入了一个特殊的特质 [[\yii2tech\behaviortrait\BehaviorTrait]],如果使用它,则可以通过内联声明的函数处理事件,这些函数可以通过其他特质添加。此特质可以添加到 [[\yii\base\Component]] 的任何子类。

每个事件处理器方法应按以下模式命名:'{eventName}Handler{UniqueSuffix}',其中 'eventName' 是方法应处理的事件的名称,'UniqueSuffix' 是任何后缀,它将特定事件处理器方法与其他方法区分开来。例如:如果类有一个名为 'beforeInsert' 的事件,则可以引入名为 beforeInsertHandlerEncryptPassword 的方法,该方法将在事件 'beforeInsert' 触发时自动触发。

use yii\db\ActiveRecord;
use yii2tech\behaviortrait\BehaviorTrait;

class User extends ActiveRecord
{
    use BehaviorTrait; // add `BehaviorTrait` allowing to use inline event handlers
    use EncryptPasswordTrait; // add trait, which introduce inline event handler

    // ...
}

trait EncryptPasswordTrait
{
    public function beforeInsertHandlerEncryptPassword(Event $event)
    {
        if (!empty($this->newPassword)) {
            $this->password = sha1($this->newPassword);
        }
    }
}

注意:注意名称冲突,确保类或通过特质声明的任何内联处理器都具有唯一的名称(具有唯一的后缀)!

注意:使用特质而不是行为可以提高性能,但灵活性较差。请注意,在 yiisoft/yii2#1041 中,Yii2 核心已拒绝采用这种方法。