Yii框架学习笔记之应用组件操作示例


Posted in PHP onNovember 13, 2019

本文实例讲述了Yii框架学习笔记之应用组件操作。分享给大家供大家参考,具体如下:

所有的组件都应声明在config/web.php

//组件声明在该数组下
'components'=>array(
  //自定义组件1 - 函数形式
  'customComponent1' => function(){
    $custom = new app\components\CustomComponent\realization\CustomComponent1();
    $custom->setName('谭勇');
    $custom->setAge(22);
    return $custom;
  },
  //自定义组件2 - 数组形式
  'customComponent2' => array(
      'class' => 'app\components\CustomComponent\relazation\CustomComponent2'
      'name'  => '谭勇',
      'age'  => 22
  ),
  //自定义组件 - 字符串形式
  'customComponent3' => 'app\components\CustomComponent\realization\CustomComponent3'
),

如果只是在components 中声明了该组件,那么只有在首次调用的时候才会实例化这个组件,之后调用都会复用之前的实例。 如果你在bootstrap 数组中声明了这个组件,那么该组件会随着应用主体的创建而实例(也就是默认会被实例,而不是首次调用才会实例这个组件)。

//默认加载customComponent1 和 customComponent2 组件
'bootstrap' => array(
  'customComponent1','customComponent2'
),

在应用目录下创建 components 目录

组件 CutomComponent

接口类 app\components\CustomComponent\CustomComponent;

<?php
  namespace app\components\CustomComponent;
  interface CustomComponent
  {
    public function setName($name);
    public function setAge($age);
    public function getName();
    public function getAge();
  }
?>

接口实现类 app\components\CustomComponent\realization\CustomComponent1

<?php
  namespace app\components\CustomComponent\realization;
  use app\components\CustomComponent\CustomComponent;
  class CustomComponent1 implments CustomComponent
  {
    public $name='勇哥';
    public $age = '我的年龄';
    public function setName($name)
    {
      $this->name = $name;
    }
    public function getName()
    {
      return $this->name;
    }
    public function setAge($age)
    {
      $this->age = $age;
    }
    public function getAge()
    {
      return $this->age;
    }
  }
?>

customComponent2,customComponent3 我们都让他们与customComponent1 具有相同的代码。 那么我们怎么去调用这些组件呢?

namespace app\controllers\home;
use Yii;
use yii\web\Controller;
class IndexController extends Controller
{
  public function actionIndex()
  {
    //组件customComponent1
    echo Yii::$app->customComponent1->getName();
    //组件customComponent2
    echo Yii::$app->customComponent2->getName();
    //组件customComponent3
    echo Yii::$app->customComponent3->getName();
  }
}

然后回过头看数组形式、函数形式、字符串形式的组件

//函数形式  -  这个很容易理解 实例化后设置属性值
function(){ 
    $custom = new app\components\CustomComponent\realization\CustomComponent1();
    $custom->setName('谭勇');
    $custom->setAge(22);
    return $custom;
  },
//数组形式 - 它会实例化这个组件 之后设置属性值 注意这里设置属性值的方法 和 函数不一样,它是 $custom->name = '谭勇' , $custom->age = 22
array(
      'class' => 'app\components\CustomComponent\relazation\CustomComponent2'
      'name'  => '谭勇',
      'age'  => 22
  ),
//字符串形式 只知道会实例化这个组件,怎么注入属性值,这个不清楚支不支持

组件有什么作用?

如果你理解Java spring mvc 那么就不难理解组件的作用 可以作为服务层,数据访问层等等

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
新版PHP极大的增强功能和性能
Oct 09 PHP
GD输出汉字的函数的分析
Oct 09 PHP
PHP写杨辉三角实例代码
Jul 17 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
php实现面包屑导航例子分享
Dec 19 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
Yii框架自定义数据库操作组件示例
Nov 11 #PHP
php接口隔离原则实例分析
Nov 11 #PHP
Yii框架布局文件的动态切换操作示例
Nov 11 #PHP
Yii框架模拟组件调用注入示例
Nov 11 #PHP
在Laravel中使用MongoDB的方法示例
Nov 11 #PHP
PHP使用递归按层级查找数据的方法
Nov 10 #PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 #PHP
You might like
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python 异常处理实例详解
2014/03/12 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
详解python中的Turtle函数库
2018/11/19 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
Python中求对数方法总结
2020/03/10 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
销售类个人求职信范文
2013/09/25 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python