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 相关文章推荐
mysql中存储过程、函数的一些问题
Feb 14 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
PHP计算加权平均数的方法
Jul 16 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
PHP抽象类和接口用法实例详解
Jul 20 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数组应该有多大的分析
2009/07/30 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
jQuery操作css样式
2017/05/15 jQuery
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python常用内置函数总结
2015/02/08 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
记者岗位职责
2014/01/06 职场文书
年终考核评语
2014/01/19 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
酒后驾车标语
2014/06/30 职场文书
教育见习报告范文
2014/11/03 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL