yii2 開發 API 初級教程

城裡的野山參發表於2020-04-17

簡介

使用 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 協議》,轉載必須註明作者和本文連結

城裡的野山參

相關文章