You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1.3 KiB

Behaviors

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.

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