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配置php-fpm启动参数及配置详解
Nov 04 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
php实现的ping端口函数实例
Nov 12 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
PHP快速推送微信模板消息
Apr 14 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
php把文件设置为插件的技巧方法
Feb 03 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
Vue中props的详解
2019/05/16 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
Scrapy的简单使用教程
2017/10/24 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
英国最大的海报商店:GB Posters
2018/03/20 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
人资专员岗位职责
2014/04/04 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
经济贸易系求职信
2014/08/04 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
python开发飞机大战游戏
2021/07/15 Python
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python