YII框架的行为

来源:互联网 发布:2016餐饮软件排名 编辑:程序博客网 时间:2024/06/04 18:23

YII框架的行为

一、什么是行为

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

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

二、定义行为

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

复制代码
<?phpnamespace 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() 方法即可。

复制代码
<?phpnamespace 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'); //动态移除

 四、使用行为

复制代码
<?phpnamespace 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();    }}
复制代码
0 0
原创粉丝点击