Alexander Makarov
11 years ago
1 changed files with 38 additions and 1 deletions
@ -1,4 +1,41 @@ |
|||||||
Behaviors |
Behaviors |
||||||
========= |
========= |
||||||
|
|
||||||
TDB |
A behavior (also knows as mixin) can be used to enhance the functionality of an existing component without modifying its |
||||||
|
code. In particular, it can "inject" its own methods and properties into the component and make them directly accessible |
||||||
|
via the component. It can also respond to the events triggered in the component and thus intercept the normal |
||||||
|
code execution. Unlike PHP traits, behaviors could be attached to classes at runtime. |
||||||
|
|
||||||
|
Using behaviors |
||||||
|
--------------- |
||||||
|
|
||||||
|
Behavior can be attached to any class that extends from `Component`. In order to do so you need to implement `behaviors` |
||||||
|
method. Yii provides `AutoTimestamp` behavior that handles updating timestamp fields on saving active record model. |
||||||
|
|
||||||
|
```php |
||||||
|
class User extends ActiveRecord |
||||||
|
{ |
||||||
|
// ... |
||||||
|
|
||||||
|
public function behaviors() |
||||||
|
{ |
||||||
|
return [ |
||||||
|
'timestamp' => [ |
||||||
|
'class' => 'yii\behaviors\AutoTimestamp', |
||||||
|
'attributes' => [ |
||||||
|
ActiveRecord::EVENT_BEFORE_INSERT => ['create_time', 'update_time'], |
||||||
|
ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time', |
||||||
|
], |
||||||
|
], |
||||||
|
]; |
||||||
|
} |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
In the above `class` value is a string containing fully qualified behavior class name. All the other key-values are |
||||||
|
assigned to corresponding properties of the class. |
||||||
|
|
||||||
|
Creating your own behaviors |
||||||
|
--------------------------- |
||||||
|
|
||||||
|
TBD |
Loading…
Reference in new issue