Yii2 应用概览

和其它框架一样,都是先了解概念,流程。yii应用的生命周期,基本上演示了从请求到响应的整个过程。

应用结构

  • 入口脚本:终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期。
  • 应用:能全局范围内访问的对象, 管理协调组件来完成请求.
  • 应用组件:在应用中注册的对象, 提供不同的功能来完成请求。
  • 模块:包含完整 MVC 结构的独立包, 一个应用可以由多个模块组建。
  • 过滤器:控制器在处理请求之前或之后 需要触发执行的代码。
  • 小部件:可嵌入到视图中的对象, 可包含控制器逻辑,可被不同视图重复调用。
    Yii2 应用的静态结构

生命周期

  1. 用户向入口脚本 web/index.php 发起请求。
  2. 入口脚本加载应用配置并创建一个应用 实例去处理请求。
  3. 应用通过请求组件解析请求的 路由。
  4. 应用创建一个控制器实例去处理请求。
  5. 控制器创建一个动作实例并针对操作执行过滤器。
  6. 如果任何一个过滤器返回失败,则动作取消。
  7. 如果所有过滤器都通过,动作将被执行。
  8. 动作会加载一个数据模型,或许是来自数据库。
  9. 动作会渲染一个视图,把数据模型提供给它。
  10. 渲染结果返回给响应组件。
  11. 响应组件发送渲染结果给用户浏览器。

请求生命周期

模型

  • yii\base\Model 被用于普通模型类的父类并与数据表无关
  • yii\db\ActiveRecord 与数据表有关联,亦继承 Model 类, 增加了数据库处理
    • 活动记录是面向对象、功能强大的访问和操作数据库数据的方式
  • Yii::$app 代表应用实例,它是一个全局可访问的单例, 同时也是一个服务定位器

控制器

操作是最终用户可以直接访问并执行的对象,被组织在控制器中。

  1. 创建操作作为控制器的一部分去处理特定请求
  2. 创建了一个视图去构造响应内容

视图

  • 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 被设计成高度可定制和可扩展的代码生成工具
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!