Yii 之components

本文详细介绍了在模块化框架中如何配置模块路径别名、加载特定目录下的组件及第三方包,并阐述了如何在控制器中获取这些组件,以及不同模块间的组件引用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们创建一个module的时候,对应的path alias就已经创建。
比如我们定义了一个module: www

1
2
3
4
5
'modules'=>array(
    'www'=>array(
        'class'=>'applications.modules.www.WwwModule',
    ),
),

打印:
echo Yii::app()->getPathOfAlias(‘www’)
你会发现www别名已经指向我们的www模块了。

假定在我们的www模块下有如下目录:
www
–components
—-ApiBase.php
–extensions
–vendors
—-Curl.php

如何加载这里面的components或者其它第三方包呢?
如下:

1
2
3
4
5
6
7
8
9
'modules'=>array(
    'www'=>array(
        'class'=>'applications.modules.www.WwwModule',
        'components' => array(
             'api'=>array('class'=>'www.components.ApiBase'),
             'curl'=>array('class'=>'www.vendors.Curl'),
        ),
    ),
),

那么在controller里面该如何获取呢:
如下:

1
2
$api = $this->getModule()->api;
$curl = $this->getModule()->curl;

$this是当前的controller.

请注意: 我们这里没有使用Yii::app()->curl来获取component,因为我们是把component定义到modules里面了。
其它模块想要使用我们的扩展怎么办?

1
$curl = Yii::app()->getModule('www')->curl;

当然对于公共的扩展,不建议定义的单个module里面, 还是放到外面的components里面定义。 然后采用Yii::app()->curl 来获取即可

转载于:https://www.cnblogs.com/jshen/p/3893852.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值