Yii2 中的本地组件是啥? [关闭]

Posted

技术标签:

【中文标题】Yii2 中的本地组件是啥? [关闭]【英文标题】:What is local component in Yii2? [closed]Yii2 中的本地组件是什么? [关闭] 【发布时间】:2019-10-13 16:04:29 【问题描述】:

在documentation“信息”部分 Yii 2 说:

使用过多的应用程序组件可能会使您的代码更难测试和维护。在许多情况下,您可以简单地创建一个本地组件并在需要时使用它。

什么是本地组件?如何创建?

【问题讨论】:

请发布文档链接。 Here 在“信息”部分 【参考方案1】:

本地组件它只是组件的本地实例。所以改为使用:

$value = Yii::$app->cache123->get($key);

这将强制您在应用配置中定义cache123 组件,您可以使用本地实例:

$cache = new ApcCache();
$value = $cache->get($key);

或者将其分配给模块,例如:

class MyModule extends \yii\base\Module 

    private $_cache;

    public function getCache(): \yii\caching\Cache 
        if ($this->_cache === null) 
            $this->_cache = new ApcCache();
        

        return $this->_cache;
    

然后在控制器中你可以使用:

$value = $this->module->getCache()->get($key);

您也可以在模块配置中定义组件:

'modules' => [
    'myModule' => [
        'class' => MyModule::class,
        'components' => [
            'cache' => FileCache::class,
        ],
    ],
],

然后在控制器中你可以使用:

$value = $this->module->cache->get($key);

通过这种方式,您可以将您的应用拆分为多个具有独立组件的独立模块。如果您有大量组件并将它们分组在模块中,那么维护这一点可能会更容易,特别是如果其中一些只在一个地方或一个模块中使用。

【讨论】:

以上是关于Yii2 中的本地组件是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 10 中创建本地通知的方法是啥。它在较旧的iOS版本中有效吗? [关闭]

颤振本地通知中的matchDateTimeComponents对象是啥?

从地理坐标计算本地用户的最有效方法是啥?

XCode Instrumentation 中的“仅支持本地设备”是啥意思

我无法从网络中的其他设备访问本地主机的原因是啥?

Flask 框架中的线程本地是啥意思? [复制]