1. 程式人生 > >Yii 微框架

Yii 微框架

mys 允許 bug href rec install 框架 文件結構 packagist

目錄

  • 安裝
  • 配置
  • 第一個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

  • 搭建項目結構,在該文件夾下分別新建 webcontrollersmodels 文件夾,結構與 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 微框架