YII框架的行为
2015-10-07 16:38
911 查看
一、什么是行为
行为,也称为 mixins,可以无须改变类继承关系即可增强一个已有的类的功能。
当一个对象或类被注入某些行为后,这个对象可以像访问自己定义的方法和属性一样访问注入进来的方法和属性。
二、定义行为
要定义行为,通过继承 yii\base\Behavior 或其子类来建立一个类。如:
三、附加行为
1、静态附加上去,覆写行为要附加的组件类的 yii\base\Component::behaviors() 方法即可。
2、动态附加上去
四、使用行为
五、关于更多信息
http://www.yiichina.com/doc/guide/2.0/concept-behaviors
行为,也称为 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
相关文章推荐
- Thinkphp 控制器内初始化方法_initialize 及前置后置方法
- PHP实现 冒泡排序算法
- PHP strtotime函数详解
- YII 中加入短信接口的函数
- 一切为了学员高薪——记传智播客PHP课程体系改革
- 有关PHP的可变函数
- Servlet基本的传递参数的设置
- PHP常用正则表达式汇总
- getPath()与getAbsolutePath()的区别
- Yii2 使用十一 在设置enablePrettyUrl时候,defaultAction的设置方法
- PHPCMS常用函数[二次开发用]
- ajax+php如何获取部分请求的信息显示在对应的div中
- u-boot-2009.11移植(适用于TQ2440和MINI2440)第六篇:添加Yaffs(2)镜像烧写功能
- php的RSA加密解密算法
- php学习基础篇之文件函数库,序列化数据,文件包含
- 对php的简单概括
- PHP字符串操作
- Ubuntu 搭建ftp服务器
- ThinkPHP 6.使用上传模块(ajaxFileUpload)
- ZH奶酪:PHP抓取网页方法总结