Yii2 应用概览
和其它框架一样,都是先了解概念,流程。
yii
应用的生命周期,基本上演示了从请求到响应的整个过程。
应用结构
- 入口脚本:终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期。
- 应用:能全局范围内访问的对象, 管理协调组件来完成请求.
- 应用组件:在应用中注册的对象, 提供不同的功能来完成请求。
- 模块:包含完整 MVC 结构的独立包, 一个应用可以由多个模块组建。
- 过滤器:控制器在处理请求之前或之后 需要触发执行的代码。
- 小部件:可嵌入到视图中的对象, 可包含控制器逻辑,可被不同视图重复调用。
生命周期
- 用户向入口脚本 web/index.php 发起请求。
- 入口脚本加载应用配置并创建一个应用 实例去处理请求。
- 应用通过请求组件解析请求的 路由。
- 应用创建一个控制器实例去处理请求。
- 控制器创建一个动作实例并针对操作执行过滤器。
- 如果任何一个过滤器返回失败,则动作取消。
- 如果所有过滤器都通过,动作将被执行。
- 动作会加载一个数据模型,或许是来自数据库。
- 动作会渲染一个视图,把数据模型提供给它。
- 渲染结果返回给响应组件。
- 响应组件发送渲染结果给用户浏览器。
模型
yii\base\Model
被用于普通模型类的父类并与数据表无关yii\db\ActiveRecord
与数据表有关联,亦继承Model
类, 增加了数据库处理- 活动记录是面向对象、功能强大的访问和操作数据库数据的方式
Yii::$app
代表应用实例,它是一个全局可访问的单例, 同时也是一个服务定位器
控制器
操作是最终用户可以直接访问并执行的对象,被组织在控制器中。
- 创建操作作为控制器的一部分去处理特定请求
- 创建了一个视图去构造响应内容
视图
Widget
展示类
...
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'code',
'name',
'population',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
yii\data\Pagination
数据分页器yii\widgets\LinkPager
分页链接生成器
模块
- 模块被当成小应用主体来看待,不能单独部署,必须属于某个应用主体
- 模块化,对业务逻辑进行分层,使用需在应用
web
配置内注册并设置引导类
Gii模块
- 配置模块引导模块信息
- 可生成
model,crud,controller,form,module,extension
- Gii 被设计成高度可定制和可扩展的代码生成工具
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: