城里的野山参 2020-04-17 17:46:15 1640次浏览 0条回复 0 0 0

简介

使用 yii2 进行 API 开发,本文档的目标是以最简便的方式来跑通整个流程,并不纠结很多的细节。

核心概念

  1. 入口脚本
  2. 应用
  3. 应用组件
  4. 控制器
  5. 动作
  6. 模型

请求流程

入口脚本 -> 路由解析 -> 控制器 -> 模型(数据处理)-> 响应

入口脚本

简单的理解,入口脚本就是 index.php,在配置 web服务器 时,需要将请求导向 index.php 所在的文件夹,在 yii2 框架中,就是 web 文件夹。

应用

举个例子,yii2 框架中的应用,有点类似于工厂中的经理角色,起的是管理调节作用,这也是应用提供的功能(这里说的应用,默认指的是一个应用实例)。应用这个经理管理调节什么?这是下面要说的应用组件。

应用组件

yii2 中,应用组件是框架已经封装好的提供特定功能的一些类,比如 db,log

这些组件在 yii2 中可自定义,可配置。

自定义指的是可以编写自己的功能类,并将其作为一个应用组件配置到框架中使用。可配置意味着灵活多变,可用可不用。

yii2 中应用组件配置在什么地方?

看配置文件(如果是接手的项目,可能有很多自定义的配置文件和官方版本稍微不同,本文的说明全部基于官方版本)web.php 中的 componentscomponents 下的每一键值对都对应一个应用组件,官方文件提供的有 request,cache,user,errorHandler,mailer,log,db,urlManager 等。

在逻辑中如何使用?

\Yii::$app->db 这样就可以获取对应的应用组件,显然这里的 db 是可以换成其他的应用组件的,比如 request等。

控制器

入口脚本接收到请求之后,URI 会被路由管理器进行处理,解析出 controlleraction 这两个最重要的东西,有了这两个值,就能定位该请求所对应的执行逻辑。控制器存放在项目根目录(这里说的项目根目录并不是 index.php 所在目录,而是整个项目的目录)下的 controllers 文件夹中,命名格式是 大驼峰 + Controller后缀

动作

在理解上,动作就是类中定义的一个方法,yii2 的控制器中的方法分为两类:动作,普通方法。

动作在命名上有要求,必须要有 action 前缀,比如 actionView 这样。普通方法就是通常意义上的方法。

模型

yii2 中对于模型同样分为两类,一般来讲模型指的是数据模型,用于和数据库进行交互。

yii2 中的两类模型,主要的区分点在于继承的父类是什么。model 的存放目录在项目根目录下的 models

class TestEntity extends \yii\base\Model
{
    #这是一种类型
}

class Test2 extends \yii\db\ActiveRecord
{
    #这是另外一种类型,也称为 AR 模型
}

两者的区别在于普通模型(非AR模型)一般用来装填数据,并不与数据库进行交互。

这是什么意思?

举个例子来说明,你创建了一张用户表,字段有 id,name,age,那么如果你创建普通模型User,一般是下面这个样子,一般叫 xxxEntity

class UserEntity extends \yii\base\Model
{
    protected $id;
    protected $name;
    protected $age;

    public function getId()
    {
        return $this->$id;
    }

    public function setId($id)
    {
        $this->id = $id;
    }

    #后面是对其他字段的 get 和 set 操作
    ...
}

所以说,普通模型其实就是一个架子,一般用来接收请求数据,根据实际情况,选择对应的普通模型,将请求中携带的数据使用 set 方法填充到架子中去,就变成了这个样子

class UserEntity extends \yii\base\Model
{
    protected $id = 1;
    protected $name = 'lovan';
    protected $age = '24';
    ...
}

这样处理过后的 Entity 会被作为参数传入 AR 模型中,由 AR 模型来接手下一步的 CRUD相关操作。

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册