Yii 微框架

目录


有些时候并不需要使用全套的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 基础版无异

猜你喜欢

转载自www.cnblogs.com/alanabc/p/9728960.html
今日推荐