一、什么是行为

行为,也称为 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框架的行为的更多相关文章

  1. yii框架安装心得

    最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...

  2. Yii框架 400 错误

    YII  400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Cli ...

  3. Yii框架CURD方法

    在YII框架中,CURD有2种方式: 1.AR模式:2. DAO模式 AR模式下 查全部   MODEL  $model->find()->asArray()->all()查单 个  ...

  4. Yaf(Yet Another Framework)用户手册 yii框架手册

    地址:http://www.laruence.com/manual/ yaf框架手册:http://pan.baidu.com/s/1bnHFPHd yii框架手册:http://pan.baidu. ...

  5. yii框架的理解

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一. yii框架里 ...

  6. 使用Yii框架完整搭建网站流程入门

    下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...

  7. Yii框架(Yii Framework)部署

    一.下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好wampserver了),环境搭建好后,到yii官方网站下载yii framework:http: ...

  8. 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...

  9. 三级联动(在YII框架中)

    //三级联动 //数据库代码过多就不上传了 //视图 <div class="area">    <table class="table"&g ...

  10. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

随机推荐

  1. 前端开发 ECMAScript-1概述

    https://www.cnblogs.com/gaoya666/p/8560745.html ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Com ...

  2. 前端开发 Angular

    https://www.angularjs.net.cn/tutorial/18.html

  3. Golang-使用md5对字符串进行加密

    方式一: func md5Test1(str string) string { m5 := md5.New() _,err := m5.Write([]byte(str)) if err != nil ...

  4. 实现负载均衡的小demo

    首先我们先来了解负载均衡: 负载均衡是为了缓解网络压力的,服务器端进行扩容的重要手段 实现有两种方式:硬件F5    .   软件nginx.Dubbo 为了实现负载均衡的原理,我们基于以下两篇随笔继 ...

  5. python day7: time,datetime,sys,pickle,json模块

    目录 python day 7 1. time模块 2. datetime模块 2.1 date类 2.2 time类 2.3 datetime类 2.4 timedelta类 2.5 tzinfo时 ...

  6. orangepi自启动打开一个终端并且运行脚本

    第一步: 在 /home/pi/.config 下创建一个文件夹,名称为 autostart,如果已经存在则不需要创建 第二步: 在autostart文件夹中创建桌面启动项文件,(文件名以 .desk ...

  7. Android查看应用方法数

    当一个项目快速迭代时,难免引进各种依赖,从而导致单个apk超过65k的限制.如何查询apk的方法数也是每个Android Developer必备技能. 我使用的是 dex-method-counts  ...

  8. Vue 默认IIS站点配置

    // Vue 默认IIS站点配置 module.exports = { baseUrl: '/SG/',  }

  9. ubbuntu---多媒体播放器VLC

    VLC多媒体播放器:Video LAN Client 信息载体:可见光通信技术(Visible Light Communication,VLC).@ https://baike.baidu.com/i ...

  10. virtual box 6.0 扩容原有磁盘空间 ubuntu18.04

    virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ...