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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
一个ubbcode的函数,速度很快.
Oct 09 PHP
php你的验证码安全码?
Jan 02 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
如何设置mysql允许外网访问
Jun 04 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
php 生成短网址原理及代码
2014/01/23 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
Python并行分布式框架Celery详解
2018/10/15 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
P/Invoke是什么
2015/07/31 面试题
小学教师岗位职责
2013/11/25 职场文书
三下乡活动方案
2014/01/31 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
社会实践评语
2014/04/28 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
委托证明书
2014/09/17 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL
MySQL 计算连续登录天数
2022/05/11 MySQL
MySQL transaction事务安全示例讲解
2022/06/21 MySQL