array CModule::_components

  所有组件对象(CComponent的子类)将作为键值存在该数组中, 键名是定义该组件时使用的键名。例如:

  protected function registerCoreComponents()
    {
        $components=array(
            'coreMessages'=>array(
                'class'=>'CPhpMessageSource',
                'language'=>'en_us',
                'basePath'=>YII_PATH.DIRECTORY_SEPARATOR.'messages',
            ),
            'db'=>array(
                'class'=>'CDbConnection',
            ),
        );

$this->setComponents($components);
    }

  CDbConnection、coreMessages的实例化对象将作为键值存在该数组中, db、coreMessages是对应的键名

array CModule::_componentConfig

  该数组存储用于初始化组件的属性值, 如果该组件在配置文件中已经定义了, yii会将这些属性值合并到一个数组中。

  protected function registerCoreComponents()
    {
        $components=array(
            'coreMessages'=>array(
                'class'=>'CPhpMessageSource',
                'language'=>'en_us',
                'basePath'=>YII_PATH.DIRECTORY_SEPARATOR.'messages',
            ),
            'db'=>array(
                'class'=>'CDbConnection',
            ),
        );

$this->setComponents($components);
    }

  main.php配置文件

return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'name'=>'My Web Application',
    //'sourceLanguage'=>'zh_cn',

'modules'=>array(
            
    ),

// application components
    'components'=>array(
        'user'=>array(
            // enable cookie-based authentication
            'allowAutoLogin'=>true,
        ),
        
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=yii',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '123456',
            'charset' => 'utf8',
        )
    )
);

yii会将registerCoreComponents方法中的db和main.php中的db合并(去掉class键值对、合并相同项), 共同作为CDbConnection对象的属性值, 而db会作为_componentConfig的一个键名, 它对应的键值是合并后的数组

解密yii中CModule::_components和CModule::_componentConfig的更多相关文章

  1. Yii中的错误及异常处理

    Yii中的错误及异常处理 Yii已经默认已经在CApplication上实现了异常和错误的接管,这是通过php的set_exception_handler, set_error_handler实现的. ...

  2. yii 中引入js 和css 的方式

    在yii中 我们需要引入css 和 js 的时候,yii 自身有需要的类. 当我在views 视图层中引入css 和 js , <?php Yii::app()->clientScript ...

  3. 在yii中使用分页

    yii中使用分页很方便,如下两种方法: 在控制器中: 1. $criteria = new CDbCriteria(); //new cdbcriteria数据库$criteria->id = ...

  4. 在yii中使用gearman

    最近项目需要将利用gearman进行任务调度,目前所用框架为yii,在部署好gearman后,试图在yii中调用gearman,一直报错: 提示reverse函数没有定义,明明已经定义了啊!可能是当时 ...

  5. yii中第三方库

    yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录  参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespac ...

  6. 在YII中使用Redis等缓存

    Yii AR 单行数据-自动缓存机制 | LOCKPHP Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶 | LOCKPHP 缓存 - 权威指南 - Yii F ...

  7. yii中的自定义组件

    yii中的自定义组件(组件就是一些自定义的公用类) 1.在项目目录中的protected/components/Xxxx.php 2.在Xxxx.php中定义一个类,类名必须与文件名相同 3.控制器中 ...

  8. Javascript and AJAX with Yii(在yii 中使用 javascript 和ajax)

    英文原文:http://www.yiiframework.com/wiki/394/javascript-and-ajax-with-yii /*** http://www.yiiframework. ...

  9. yii 中设置提示成功信息,错误提示信息,警告信息

    方法一: <?php Yii::app()->user->setFlash(‘success’,”Data saved!”); 设置键值名为success的临时信息.在getFlas ...

随机推荐

  1. psacct监视用户执行的命令,如cpu时间和内存战胜,实时进程记账

    psacct监视用户执行的命令,如cpu时间和内存战胜,实时进程记账

  2. C读txt到二维数组

    #include<stdio.h> #include<stdlib.h> #define maxn 200 void main() { FILE *fp; int s[maxn ...

  3. linux之SQL语句简明教程---WHERE

    我们并不一定每一次都要将表格内的资料都完全抓出.在许多时候,我们会需要选择性地抓资料.就我们的例子来说,我们可能只要抓出营业额超过 $1,000 的资料.要做到这一点,我们就需要用到 WHERE 这个 ...

  4. linux命令之uname

    uname是linux中查询系统基本信息的命令. 命令形式: uname [选项] 选项包括:(若不跟任何选项:则默认-s选项) -s, --kernel-name 输出内核名称   -n, --no ...

  5. linux命令之mount

    熟悉linux的同学都应该知道mount命令.在linux中,一切皆文件.硬盘分区都是以文件目录的方式存在. 如果我们想访问移动硬盘,U盘等我们必须将这些设备mount到我们linux文件系统中某个目 ...

  6. MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

    在阅读Linux Driver源码时,我们常常会在文件的结尾处看到诸如:MODULE_AUTHOR.MODULE_DESCRIPTION.MODULE_LICENSE等宏定义,这些宏主要是定义了一些模 ...

  7. 设计师Yoyo:为用户设计产品,让他们生活更美好

    Yoyo设计走过的路:纽约爱立信,西雅图美国在线,硅谷雅虎,ATT,深圳腾讯,华为:Yoyo不仅是顶级的交互体验设计师,还是很Open的知识分享者,从职业选择,以及对年轻人的建议几个角度,摘录他的文章 ...

  8. poj 3026 (最小生成树)

    题意:起点开始有超过100个人,总共不会超过100个外星人,问把所有的外星人都搜出来花的最小时间.一条路径上的时间跟人数是无关的,只跟路径长度有关. 思路:刚开始人都在起点,当派一定人数去最近的外星人 ...

  9. OS Kernel Parameter.semopm

    安装Oracle11g内核参数semopm未校验通过,点击Fix&Check Again后,会提示执行修改脚本,在/tmp/CVU_11.2.0.1.0_oracle下,找到并执行该脚本run ...

  10. Inno setup complier将文件添加注册表

    [Registry] Root: HKCR; Subkey:.; ValueType: string; ValueName: ; ValueData:"264file" Root: ...