您的位置:首页 > 编程语言 > PHP开发

YII框架的行为

2015-10-07 16:38 911 查看
一、什么是行为

行为,也称为 mixins,可以无须改变类继承关系即可增强一个已有的类的功能。

当一个对象或类被注入某些行为后,这个对象可以像访问自己定义的方法和属性一样访问注入进来的方法和属性。

二、定义行为

要定义行为,通过继承 yii\base\Behavior 或其子类来建立一个类。如:

<?php
namespace vendor\Behavior;

use yii\base\Behavior;
/**
* 定义一个服务员的点餐的行为
*/
class MyBehavior extends Behavior
{
public $paper='paper<br/>'; //纸

private $_pen; //笔

public function getPen() {
return $this->_pen;
}

public function setPen($value)
{
$this->_pen = $value;
}
/**
* 点餐
*/
public function order() {
echo 'order<br/>';
}
}


三、附加行为

1、静态附加上去,覆写行为要附加的组件类的 yii\base\Component::behaviors() 方法即可。

<?php
namespace vendor\Behavior;
use vendor\Behavior\MyBehavior;
use yii\base\Component;
/**
* 定义一个服务员类
*/
class Waiter extends Component{
public function behaviors() {
return [
MyBehavior::className(),
];
}
}


2、动态附加上去

$waiter->attachBehavior('MyBehavior', MyBehavior::className()); //动态附加
$waiter->detachBehavior('MyBehavior'); //动态移除


四、使用行为

<?php
namespace app\controllers;
use yii\web\Controller;
use \YII;
use vendor\Behavior\MyBehavior;
use vendor\Behavior\Waiter;

class TestController extends Controller
{
public function actionIndex() {
$waiter = new Waiter;
$waiter->attachBehavior('MyBehavior', MyBehavior::className()); //动态附加 $waiter->detachBehavior('MyBehavior'); //动态移除
$waiter->order();
echo $waiter->paper;
$waiter->setPen('pen<br/>');
echo $waiter->getPen();
}
}


五、关于更多信息
http://www.yiichina.com/doc/guide/2.0/concept-behaviors
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: