簡介
使用 yii2
進行 API
開發,本文件的目標是以最簡便的方式來跑通整個流程,並不糾結很多的細節。
核心概念
入口指令碼
應用
應用元件
控制器
動作
模型
請求流程
入口指令碼 -> 路由解析 -> 控制器 -> 模型(資料處理)-> 響應
入口指令碼
簡單的理解,入口指令碼就是 index.php
,在配置 web伺服器
時,需要將請求導向 index.php
所在的資料夾,在 yii2
框架中,就是 web
資料夾。
應用
舉個例子,yii2
框架中的應用,有點類似於工廠中的經理角色,起的是管理調節作用,這也是應用提供的功能(這裡說的應用,預設指的是一個應用例項)。應用這個經理管理調節什麼?這是下面要說的應用元件。
應用元件
yii2
中,應用元件是框架已經封裝好的提供特定功能的一些類,比如 db
,log
。
這些元件在 yii2
中可自定義,可配置。
自定義指的是可以編寫自己的功能類,並將其作為一個應用元件配置到框架中使用。可配置意味著靈活多變,可用可不用。
在 yii2
中應用元件配置在什麼地方?
看配置檔案(如果是接手的專案,可能有很多自定義的配置檔案和官方版本稍微不同,本文的說明全部基於官方版本)web.php
中的 components
,components
下的每一鍵值對都對應一個應用元件,官方檔案提供的有 request
,cache
,user
,errorHandler
,mailer
,log
,db
,urlManager
等。
在邏輯中如何使用?
\Yii::$app->db
這樣就可以獲取對應的應用元件,顯然這裡的 db
是可以換成其他的應用元件的,比如 request
等。
控制器
入口指令碼接收到請求之後,URI
會被路由管理器進行處理,解析出 controller
和 action
這兩個最重要的東西,有了這兩個值,就能定位該請求所對應的執行邏輯。控制器存放在專案根目錄(這裡說的專案根目錄並不是 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
相關操作。
本作品採用《CC 協議》,轉載必須註明作者和本文連結