yii2 开发 API 初级教程

简介

使用 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;

}

#后面是对其他字段的 getset 操作

...

}

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


class UserEntity extends \yii\base\Model

{

protected $id = 1;

protected $name = 'lovan';

protected $age = '24';

...

}

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
城里的野山参
讨论数量: 1

YII怎么多年了 为什么没有特别详细的教程 和 laravel一样子的大学习平台

2年前 评论
城里的野山参 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
69
粉丝
10
喜欢
30
收藏
39
排名:571
访问:1.4 万
私信
所有博文
社区赞助商