Yii 框架应用(Applications)操作实例详解

2020-05-15 14:00:45王旭

使用这个属性来定义别名, 代替 Yii::setAlias() 方法来设置。

bootstrap

这个属性很实用,它允许你用数组指定启动阶段 bootstrapping process 需要运行的组件。 比如,如果你希望一个 模块 自定义 URL 规则, 你可以将模块ID加入到bootstrap数组中。

属性中的每个组件需要指定以下一项:

应用 组件 ID. 模块 ID. 类名. 配置数组. 创建并返回一个组件的无名称函数.

例如:

[
 'bootstrap' => [
  // 应用组件ID或模块ID
  'demo',
 
  // 类名
  'appcomponentsProfiler',
 
  // 配置数组
  [
   'class' => 'appcomponentsProfiler',
   'level' => 3,
  ],
 
  // 匿名函数
  function () {
   return new appcomponentsProfiler();
  }
 ],
]

信息: 如果模块 ID 和应用组件 ID 同名,优先使用应用组件 ID, 如果你想用模块 ID, 可以使用如下无名称函数返回模块 ID。

[
 function () {
  return Yii::$app->getModule('user');
 },
]

在启动阶段,每个组件都会实例化。如果组件类实现接口 yiibaseBootstrapInterface,也会调用 bootstrap() 方法。

举一个实际的例子,Basic Application Template 应用主体配置中, 开发环境下会在启动阶段运行 debuggii 模块。

if (YII_ENV_DEV) {
 // configuration adjustments for 'dev' environment
 $config['bootstrap'][] = 'debug';
 $config['modules']['debug'] = 'yiidebugModule';
 
 $config['bootstrap'][] = 'gii';
 $config['modules']['gii'] = 'yiigiiModule';
}

注意: 启动太多的组件会降低系统性能,因为每次请求都需要重新运行启动组件, 因此谨慎配置启动组件。

catchAll

该属性仅 Web applications 网页应用支持。 它指定一个要处理所有用户请求的 控制器方法, 通常在维护模式下使用,同一个方法处理所有用户请求。

该配置为一个数组,第一项指定动作的路由,剩下的数组项(key-value 成对)指定传递给动作的参数, 例如:

[
 'catchAll' => [
  'offline/notice',
  'param1' => 'value1',
  'param2' => 'value2',
 ],
]

信息: 当开启这个属性时,开发环境下的调试面板将不能工作。

components

这是最重要的属性,它允许你注册多个在其他地方使用的 应用组件. 例如

[
 'components' => [
  'cache' => [
   'class' => 'yiicachingFileCache',
  ],
  'user' => [
   'identityClass' => 'appmodelsUser',
   'enableAutoLogin' => true,
  ],
 ],
]

每一个应用组件指定一个key-value对的数组,key代表组件ID, value代表组件类名或 配置。

在应用中可以任意注册组件,并可以通过表达式

相关文章 大家在看