首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
7.1 调用小部件的两种方式
7.1.1 调用widget()方法使用小部件DatePicker
7.1.2 调用begin()和end()方法使用小部件ActiveForm
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
7.2.1 调用小部件ActiveForm
7.2.2 “文章标题”文本输入框
7.2.3 “文章栏目”下拉列表框
7.2.4 “文章图片”上传文件输入框
7.2.5 “内容”文本输入域
7.3 自定义小部件
7.3.1 继承Widget
7.3.2 自定义小部件的MVC结构
7.4 项目实现迭代九:自定义首页幻灯片小部件
7.5 项目实现迭代十:分页显示列表页
7.5.1 分页组件Pagination
7.5.2 新闻中心列表页实现数据填充
7.5.3 分页的超链接列表小部件LinkPager
8.1 初识资源包类
8.2 Yii2框架资源管理代码分析
8.2.1 视图中注册资源包类
8.2.2 注册资源文件
8.2.3 输出缓冲区的数据
8.3 AssetBundle类的成员属性
8.4 项目实现迭代十一:本书配套项目实现前端资源管理
8.4.1 实现首页前端资源管理
8.4.2 实现新闻中心列表页前端资源管理
9.1 模型中编写验证规则
9.2 控制器中安全赋值
9.3 控制器中触发验证
9.4 视图中提取错误信息
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证
10.1 AJAX简介
10.2 传统的JavaScript实现AJAX验证
10.2.1 创建AJAX引擎XMLHttpRequest对象
10.2.2 创建HTTP请求
10.2.3 设置响应HTTP请求状态变化的方法
10.2.4 设置获取服务器返回数据的语句
10.2.5 发送HTTP请求
10.3 jQuery实现AJAX验证
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证
11.1 用户登录-表单模型
11.2 用户登录-客户端验证
11.2.1 ActiveForm实现客户端验证代码分析
11.2.2 项目实现迭代十四:完成登录页面的客户端验证
11.3 模型中的自定义方法作为rules()验证器
11.4 用于验证用户名和密码的身份类UserIdentity
11.5 项目实现迭代十五:完成用户登录
11.6 保存用户登录状态的yii\web\User类
12.1 访问控制技术综述
12.2 RBAC简介
12.3 RBAC需求分析及功能概述
12.4 项目实现迭代十六:最简方式实现RBAC
12.4.1 数据库设计
12.4.2 用户管理
12.4.3 角色管理
12.4.4 权限管理
12.4.5 用户—角色配置管理
12.4.6 角色—权限配置管理
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现 RBAC
12.5.1 基本概念
12.5.2 用户管理
12.5.3 角色管理
12.5.4 权限管理
12.5.5 权限管理系统验证
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
12.6.1 配置
12.6.2 使用的数据库表
12.6.3 路由列表
12.6.4 角色列表
12.6.5 用户列表
12.6.6 菜单列表
12.6.7 集成AdminLTE后台主题及菜单展示
12.6.8 基于存取控制过滤器(ACF)的用户登录页面
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(中)
小册名称:Yii2框架从入门到精通(中)
### 12.6.1 配置 在Yii2框架中,配置是应用程序运行的核心组成部分,它决定了应用程序的行为、组件的初始化参数以及服务的注册方式。通过灵活的配置系统,Yii2允许开发者以声明式的方式定义应用程序的结构,使得代码更加清晰、易于维护。本章将深入探讨Yii2的配置机制,包括配置文件的结构、如何编写配置、环境敏感配置的处理、以及高级配置技巧。 #### 12.6.1.1 配置文件基础 Yii2的配置文件通常是以PHP数组的形式编写的,这些数组包含了应用程序或组件的配置信息。Yii2提供了几种方式来加载和应用这些配置,但最常见的是通过`web.php`(对于Web应用)和`console.php`(对于控制台应用)这两个入口文件来加载。 ##### 配置文件结构 一个基本的`web.php`配置文件可能看起来像这样: ```php <?php $params = require(__DIR__ . '/params.php'); $config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'components' => [ 'request' => [ // request component configuration ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ // URL rules ], ], 'user' => [ 'identityClass' => 'app\models\User', 'enableAutoLogin' => true, ], 'errorHandler' => [ 'errorAction' => 'site/error', ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', // mailer configuration ], 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], // 其他组件配置... ], 'params' => $params, ]; if (YII_ENV_DEV) { // development environment-specific configuration adjustments go here } return $config; ``` 这个配置文件定义了应用程序的基本信息(如ID和基路径)、引导组件(如日志组件)、以及其他组件(如请求处理、URL管理、用户认证、邮件发送、日志记录等)的配置。 ##### 组件配置 在Yii2中,组件是应用程序的基本构建块,它们可以是任何实现了`yii\base\Component`接口或继承自`yii\base\Component`的类。组件的配置通常通过`components`数组来定义,每个组件的配置都是一个数组,其中可以包含类名(`class`)、属性(直接作为键值对)、以及方法调用(通过`set`前缀的键或闭包函数)。 #### 12.6.1.2 环境敏感配置 在实际开发中,不同的环境(如开发环境、测试环境和生产环境)可能需要不同的配置。Yii2通过环境常量(如`YII_ENV_DEV`、`YII_ENV_TEST`、`YII_ENV_PROD`)来区分不同的环境,并在配置文件中根据当前环境进行条件配置。 ##### 使用环境常量 在`web.php`或`console.php`文件中,可以根据`YII_ENV`的值来应用不同的配置。例如,上面的示例中,如果当前环境是开发环境(`YII_ENV_DEV`为真),则可以添加一些仅适用于开发环境的配置,如更详细的日志记录或调试工具的配置。 ##### 配置文件分离 为了保持配置文件的清晰和可维护性,可以将不同环境的配置分离到不同的文件中,然后在主配置文件中根据当前环境动态加载相应的配置文件。这可以通过`require`或`require_once`语句来实现。 #### 12.6.1.3 高级配置技巧 ##### 数组合并与覆盖 Yii2的配置系统支持数组的合并与覆盖,这意味着你可以在不同的配置文件中定义相同的配置项,后加载的配置会覆盖先加载的配置。这一特性使得你可以在不同的层级上定义配置,如全局配置、环境特定配置、模块特定配置等。 ##### 动态配置 在某些情况下,你可能需要根据应用程序的运行时状态来动态地修改配置。虽然直接在运行时修改配置数组是不推荐的(因为这可能会导致难以追踪的错误),但你可以通过一些技巧来实现类似的效果,如使用依赖注入容器(DI Container)来动态创建和配置组件。 ##### 配置文件验证 为了确保配置的正确性,Yii2允许你定义配置文件的验证规则。这可以通过实现`yii\base\BootstrapInterface`接口或创建自定义的引导类并在其中进行配置验证来实现。虽然Yii2核心框架没有直接提供配置验证的内置机制,但你可以通过编写自定义代码来轻松实现这一功能。 #### 12.6.1.4 结论 Yii2的配置系统是一个强大而灵活的工具,它允许开发者以声明式的方式定义应用程序的结构和行为。通过合理组织配置文件、利用环境敏感配置以及掌握高级配置技巧,你可以构建出既易于维护又高度可定制的应用程序。无论是初学者还是经验丰富的开发者,深入理解Yii2的配置机制都是掌握Yii2框架的关键一步。
上一篇:
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
下一篇:
12.6.2 使用的数据库表
该分类下的相关小册推荐:
PHP底层原理及源码分析
PHP8实战小册
PHP合辑2-高级进阶
Laravel(10.x)从入门到精通(十一)
经典设计模式PHP版
PHP8入门与项目实战(7)
Magento零基础到架构师(内容设计)
剑指PHP(从入门到进阶)
Laravel(10.x)从入门到精通(十四)
Laravel(10.x)从入门到精通(三)
Laravel(10.x)从入门到精通(十九)
Magento零基础到架构师(系统管理)