Yii 微框架
目錄
- 安裝
- 配置
- 第一個API
- API風格
- 返回一些數據
- 其他
有些時候並不需要使用全套的Yii框架,Yii 本身已經是一個微框架了。
這裏可以參考官方:Yii 2.0 權威指南 - 使用 Yii 作為微框架
安裝
這部分與 Yii 官方文檔無異。
新建一個工作文件夾,暫且命名為
micro-app
在該文件夾下新建
composer.json
文件:{ "require": { "yiisoft/yii2": "~2.0.0" }, "repositories": [ { "type": "composer", "url": "https://packagist.laravel-china.org" } ] }
請註意這裏的
url
,composer 官方庫是https://asset-packagist.org
,因為墻的原因,國內訪問速度較慢,因此替換為以上 laravel-china 搭建的庫。運行
composer install
命令(Windows下是composer.bat install
)搭建項目結構,在該文件夾下分別新建
web
、controllers
、models
文件夾,結構與 Yii 基礎版類似。web
文件夾作為可訪問目錄使用,裏面放入入口文件index.php
:<?php // comment out the following two lines when deployed to production defined(‘YII_DEBUG‘) or define(‘YII_DEBUG‘, true); defined(‘YII_ENV‘) or define(‘YII_ENV‘, ‘dev‘); require(__DIR__ . ‘/../vendor/autoload.php‘); require(__DIR__ . ‘/../vendor/yiisoft/yii2/Yii.php‘); $config = require __DIR__ . ‘/../config.php‘; (new yii\web\Application($config))->run();
新建配置文件,在
micro-app
目錄下新建config.php
文件:<?php return [ ‘id‘ => ‘micro-app‘, // the basePath of the application will be the `micro-app` directory ‘basePath‘ => __DIR__, // this is where the application will find all controllers ‘controllerNamespace‘ => ‘micro\controllers‘, // set an alias to enable autoloading of classes from the ‘micro‘ namespace ‘aliases‘ => [ ‘@micro‘ => __DIR__, ], ];
於是你有了如下的文件結構:
micro-app/
├── composer.json
├── config.php
├── web/
└── index.php
├── models/
└── controllers/
配置
在 config.php
中編寫配置信息(可參考Yii基礎版或高級版,是一樣的):
‘components‘ => [
// 數據庫:
// 使用mysql數據庫,數據庫地址是localhost,使用的庫是cms
// 數據庫用戶名:root,密碼:123456
‘db‘ => [
‘class‘ => ‘yii\db\Connection‘,
‘dsn‘ => ‘mysql:host=localhost;dbname=cms‘,
‘username‘ => ‘root‘,
‘password‘ => ‘123456‘,
],
// 請求:
// 允許使用JSON格式的請求,並配置JSON解析器
‘request‘ => [
‘parsers‘ => [
‘application/json‘ => ‘yii\web\JsonParser‘,
]
],
// 響應:
// 返回數據的格式為JSON
‘response‘ => [
‘format‘ => ‘json‘,
],
// URL路由:
// 參考官方文檔可以對URL進行美化、語義化
// ‘urlManager‘ => [
// ‘enablePrettyUrl‘ => true,
// ‘showScriptName‘ => false,
// ‘enableStrictParsing‘ => true,
// ‘rules‘ => [
// ],
// ],
],
第一個API
API風格
這裏的 API 非 restful 風格,而是自定的格式:
{
‘Status‘: 200,
‘Data‘: [],
‘ErrorMessage‘: ‘‘
}
Status
:業務狀態碼,參考http狀態碼,200表示成功
Data
:業務數據
ErrorMessage
:錯誤信息,若無錯誤則為空
接收 API 數據的一方,在得到響應時,先判斷 Status
,若錯誤應該根據 ErrorMessage
做適當處理。
返回一些數據
1、在 models
文件夾下新建文件 User.php
:
<?php
namespace micro\models;
use yii\db\ActiveRecord;
class User extends ActiveRecord
{
}
2、在 controllers
文件夾下新建文件 SiteController.php
:
<?php
namespace micro\controllers;
use micro\models\User;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
return [
‘Status‘ => 200,
‘Data‘ => User::findOne([‘id‘ => 1]),
‘ErrorMessage‘ => ‘‘,
];
}
}
3、訪問
如果你已經把
web
文件夾設置為訪問目錄,則可嘗試訪問:http://localhost/?r=site/index
如果你的訪問目錄是
micro-app
,那麽嘗試訪問:http://localhost/web/?r=site/index
響應大概是:
其他
- URL可以做一些美化,參考:Yii 2.0 權威指南 - 路由
- 接收數據依然可以像在 Yii 基礎版裏那樣,使用
Yii::$app->request->post()
等 - 可以在
\web\index.php
中設置測試環境或生產環境,與 Yii 基礎版無異
Yii 微框架