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
  • 搭建项目结构,在该文件夹下分别新建 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 基础版无异

原文地址:https://www.cnblogs.com/alanabc/p/9728960.html

时间: 2024-10-10 10:16:49

Yii 微框架的相关文章

Golang 微框架 Gin 简介

框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个. 曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫.golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架.既然构造框架的门槛变低了,

python微框架Bottle(http)

环境: win7系统 Python2.7 一 背景和概述 眼下项目中须要加入一个激活码功能,打算单独弄一个httpserver来写. 由于之前的游戏中已经有了一套完整的激活码生成工具和验证httpserver,所以直接拿过来使用了. 都是用Python写的,httpserver用到了Python微框架Bottle. Bottle是一个很精致的WSGI框架.它提供了 Python Web开发中须要的基本支持: URL路由. Request/Response对象封装, 模板支持, 与WSGIserv

Java微框架:不可忽视的新趋势--转载

原文:http://www.infoq.com/cn/news/2015/06/Java-Spark-Jodd-Ninja?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global 任何语言都有优缺点.对Java而言,它安全.经过严格测试.向后兼容,但却牺牲了部分灵活性和简洁性.于是,有人就尝试寻找方法,以便能规避Java的臃肿,同时又利用JVM的强大功能.第一波努力围绕轻量级Java框架

深入学习微框架:Spring Boot(转)

转:http://www.infoq.com/cn/articles/microframeworks1-spring-boot/ 相关参考: https://spring.io/guides/gs/spring-boot/ http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ https://github.com/spring-projects/spring-boot 深入学习微框架:Sprin

PHP开发者应了解的24个超酷的PHP库(微框架)

PHP开发者应了解的24个超酷的PHP库(微框架) 作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是我曾经遇到过最酷的24个库.你最喜欢的库没有在这个列表里面?那就在评论中分享吧! 1. Dispatch – 微框架 Dispatch是一个PHP小框架.它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序.这对API.简单的站点或原型来说是完美的. [php] view plaincopy

微服务的入门级微框架Spring Boot快速入门

详情请交流  QQ  709639943 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务

零度基于 ASP.NET MVC + EF 构建的微框架开源

零度微框架,基于 MVC 与 EF 的轻量级快速开发框架,现在就使用零度微框架提高生产效率. 简单灵活的认证授权系统 无需编码即可管理系统用户 多角色授权更简单 几分钟使用模板生成具有多功能的界面和代码 无限级导航菜单配置 系统错误日志快速筛选 提供12种主题灵活选择 零度微框架架构图 贴心的功能支持扩展开发 用户管理.角色管理.灵活授权.实体权限.导出报表.微信集成.定时任务.代码生成.性能探测.数据迁移.通用分页.模型映射.链式验证.依赖注入.缓存管理.异常处理.日志跟踪.多语言支持.可定制

FF.PyAdmin 接口服务/后台管理微框架 (Flask+LayUI)

源码(有兴趣的朋友请Star一下) github: https://github.com/fufuok/FF.PyAdmin gitee: https://gitee.com/fufuok/FF.PyAdmin 初衷 运维开发中, 各类接口服务和后台管理系统必不可少, 索性写个通用的/简单易用的/支持快速开发的微框架. 一是开发时尽可能只关注业务逻辑, 快速实现, 不用再过多考虑架构/前端/布局什么的. 二是将常用业务逻辑二次封装, 使用时, 用简洁的语句即可完成复杂的事务, 并自动处理异常.

SpringCloud微框架系列整体模块梳理

Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ————————————————————main———————————————————— 一.SpringCloud项目简介 Spring Cloud: 微服务工具包,为开发者提供了在分布式系统的配置管理.服务发现.断路器.智能路由.微代理.控制总线等开发工具包. Spring Boot: 旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱