yii2tech / behavior-trait
此包已被弃用且不再维护。未建议替代包。
允许通过内联声明的函数处理事件,这些函数可以通过特质添加。
1.0.0
2015-12-26 11:11 UTC
Requires
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2022-01-10 10:38:46 UTC
README
Yii 2 的行为特质扩展
此扩展提供了一种通过特质添加内联声明的函数来处理事件的能力。
有关许可信息,请查看LICENSE文件。
安装
安装此扩展的首选方式是通过 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 核心已拒绝采用这种方法。