Yii2 中的本地组件是什么?
What is local component in Yii2?
在 documentation "info" 部分 Yii 2 说:
Using too many application components can potentially make your code harder to test and maintain. In many cases, you can simply create a local component and use it when needed.
什么是本地组件?如何创建它?
本地组件它只是组件的本地实例。所以改为使用:
$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);
通过这种方式,您可以将您的应用拆分为多个具有独立组件的独立模块。如果您有大量组件并将它们分组到模块中,尤其是其中一些组件仅在一个地方或一个模块中使用时,维护起来可能会更容易。
在 documentation "info" 部分 Yii 2 说:
Using too many application components can potentially make your code harder to test and maintain. In many cases, you can simply create a local component and use it when needed.
什么是本地组件?如何创建它?
本地组件它只是组件的本地实例。所以改为使用:
$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);
通过这种方式,您可以将您的应用拆分为多个具有独立组件的独立模块。如果您有大量组件并将它们分组到模块中,尤其是其中一些组件仅在一个地方或一个模块中使用时,维护起来可能会更容易。