Yii 微框架
Posted alanabc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
)搭建项目结构,在该文件夹下分别新建
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 yiiwebApplication($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‘ => ‘microcontrollers‘, // 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‘ => ‘yiidbConnection‘,
‘dsn‘ => ‘mysql:host=localhost;dbname=cms‘,
‘username‘ => ‘root‘,
‘password‘ => ‘123456‘,
],
// 请求:
// 允许使用JSON格式的请求,并配置JSON解析器
‘request‘ => [
‘parsers‘ => [
‘application/json‘ => ‘yiiwebJsonParser‘,
]
],
// 响应:
// 返回数据的格式为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 micromodels;
use yiidbActiveRecord;
class User extends ActiveRecord
{
}
2、在 controllers
文件夹下新建文件 SiteController.php
:
<?php
namespace microcontrollers;
use micromodelsUser;
use yiiwebController;
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()
等 - 可以在
webindex.php
中设置测试环境或生产环境,与 Yii 基础版无异
以上是关于Yii 微框架的主要内容,如果未能解决你的问题,请参考以下文章
在 Yii 框架视图中使用 if-else php 代码是不是可取?
SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段