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
Smarty的配置与高级缓存技术分享
Jun 05 PHP
深入密码加salt原理的分析
Jun 06 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
浅析php原型模式
Nov 25 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP中递归的实现实例详解
Nov 14 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
如何运行/调试你的PHP代码
Oct 23 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
PHP的面试题集
2006/11/19 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
机械电子工程毕业生自荐信
2013/11/23 职场文书
生日派对邀请函
2014/01/13 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
请客吃饭开场白
2015/06/01 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript