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实现维护文件代码
Jun 14 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
PHP开发注意事项总结
Feb 04 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
php文件上传的两种实现方法
Apr 04 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
推荐一篇入门级的Class文章
2007/03/19 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
XML的代替者----JSON
2007/07/21 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
nodejs中全局变量的实例解析
2017/03/07 NodeJs
js实现3D图片展示效果
2017/03/09 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
优秀党支部事迹材料
2014/01/14 职场文书
领导检查欢迎词
2014/01/14 职场文书
委托书样本
2014/04/02 职场文书
家长对学生的评语
2014/04/18 职场文书
工地标语大全
2014/06/18 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python