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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php运行时动态创建函数的方法
Mar 16 PHP
php编写简单的文章发布程序
Jun 18 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 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获取数组中重复数据的两种方法
2013/06/28 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
jquery 无限级联菜单案例分享
2013/03/26 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
ES6之Proxy的get方法详解
2019/10/11 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python中super关键字用法实例分析
2015/05/28 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python 调用c语言函数的方法
2017/09/29 Python
python实现合并两个排序的链表
2019/03/03 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
JPA的特点
2014/10/25 面试题
年终晚会活动方案
2014/08/21 职场文书
离婚财产处理协议书
2014/09/30 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2014年政协工作总结
2014/12/09 职场文书
2015年度房地产工作总结
2015/04/09 职场文书