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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
PHP文本数据库的搜索方法
Oct 09 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php实现图片以base64显示的方法
Oct 13 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 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环境――Appserv
2006/12/13 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python实现机器人行走效果
2018/01/29 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
法学专业应届生求职信
2013/10/16 职场文书
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
医疗纠纷协议书
2014/04/16 职场文书
小学生手册家长评语
2014/04/16 职场文书
宣传口号大全
2014/06/16 职场文书
保安2014年终工作总结
2014/12/06 职场文书
先进典型发言材料
2014/12/30 职场文书
机动车交通事故协议书
2015/01/29 职场文书
消防演习感想
2015/08/10 职场文书
小学大队长竞选稿
2015/11/20 职场文书