YII框架的行为
一、什么是行为
行为,也称为 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
YII框架的行为的更多相关文章
- yii框架安装心得
最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...
- Yii框架 400 错误
YII 400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Cli ...
- Yii框架CURD方法
在YII框架中,CURD有2种方式: 1.AR模式:2. DAO模式 AR模式下 查全部 MODEL $model->find()->asArray()->all()查单 个 ...
- Yaf(Yet Another Framework)用户手册 yii框架手册
地址:http://www.laruence.com/manual/ yaf框架手册:http://pan.baidu.com/s/1bnHFPHd yii框架手册:http://pan.baidu. ...
- yii框架的理解
Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一. yii框架里 ...
- 使用Yii框架完整搭建网站流程入门
下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...
- Yii框架(Yii Framework)部署
一.下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好wampserver了),环境搭建好后,到yii官方网站下载yii framework:http: ...
- 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server
原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...
- 三级联动(在YII框架中)
//三级联动 //数据库代码过多就不上传了 //视图 <div class="area"> <table class="table"&g ...
- Yii 框架学习--01 框架入门
Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...
随机推荐
- VBA编程图表(二十一)
使用VBA,可以根据特定标准生成图表.下面通过一个例子来看看它如何实现. 第1步 - 输入要生成图形的数据. 第2步 - 创建3个按钮 - 一个生成条形图,另一个生成饼图,另一个生成柱形图. 第3步 ...
- netaddr网络地址工具python
print("==========1==========") from netaddr import IPNetwork # IPNetwork('192.168.7.80/30' ...
- java数据库数据导入excel
data导出入excel中 controller: package com.longfor.hrssc.api.controller; import com.longfor.hrssc.api.mod ...
- Oracle 多表插入
多表插入 作用:一条INSERT语句可以完成向多张表的插入任务(Multitable insert).有两种形式:insert all与insert first,准备测试环境:1.创建表T并初始化测试 ...
- git 如何忽略已经加入到版本控制的文件
增加 .gitignore 文件,里面添加需要忽略的文件(file_not_wanted): 执行命令 git rm -r --cached . 注意,最后的点.不要省略. 最后重新将所有文件添加 ...
- websocket实现心跳连接
在使用websocket的时候,遇到了一个websocket在连接一段时间就异常断开连接了.第一想法就是重新去连接websocket(websock.onopen),后来发现这种方式是错误的,查阅文档 ...
- 剑指Offer(二十三):二叉搜索树的后序遍历序列
剑指Offer(二十三):二叉搜索树的后序遍历序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- IDEA实用教程(十)—— 配置Maven的全局设置
使用之前需要提前安装好Maven 第一步 第二步
- JS之try..catch...
try 测试代码块的错误. catch 语句处理错误. throw 创建并跑出错误. try { //在这里运行代码 抛出错误 }catch(err){ //在这里处理错误 } 实例: <p&g ...
- php5.6 的mcrypt_encrypt 函数可以和5.5.9的行为一样
php5.5.9 -----------------------$output = "test php !!" $key = "abcd123456789"; ...