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中使用sockets:从新闻组中获取文章
Oct 09 PHP
PHP 上传文件大小限制
Jul 05 PHP
程序员编程十条戒律
Jul 09 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
php中上传文件的的解决方案
Sep 25 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 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
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
为你总结一些php系统类函数
2015/10/21 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
Javascript模块模式分析
2008/05/16 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python opencv之SURF算法示例
2018/02/24 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Selenium的使用详解
2018/10/19 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
python关于变量名的基础知识点
2020/03/03 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
django 多数据库及分库实现方式
2020/04/01 Python
Python实现SMTP邮件发送
2020/06/16 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
心理健康教育制度
2014/01/27 职场文书
关于运动会的稿件
2014/02/02 职场文书
预备党员政审材料
2014/02/04 职场文书
开学典礼决心书
2014/03/11 职场文书
开学第一周总结
2015/07/16 职场文书
导游词之贵州织金洞
2019/10/12 职场文书