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 相关文章推荐
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
PHP的PSR规范中文版
Sep 28 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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简单的会话类代码
2011/08/08 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
制作特殊字的脚本
2006/06/26 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
Python实现身份证号码解析
2015/09/01 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
Python 转义字符详细介绍
2017/03/21 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
优秀教师先进事迹
2014/01/22 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
中药学专业求职信
2014/05/31 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
社区志愿者活动方案
2014/08/18 职场文书
监护人证明
2015/06/19 职场文书
停车场管理制度范本
2015/08/05 职场文书