14 Star 57 Fork 13

文化人干流氓事 / Thinkphp Restful API

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

ThinkPHP 5.1

ThinkPHP5.1对底层架构做了进一步的改进,减少依赖,其主要特性包括:

  • 采用容器统一管理对象
  • 支持Facade
  • 注解路由支持
  • 路由跨域请求支持
  • 配置和路由目录独立
  • 取消系统常量
  • 助手函数增强
  • 类库别名机制
  • 增加条件查询
  • 改进查询机制
  • 配置采用二级
  • 依赖注入完善
  • 中间件支持(V5.1.6+)

ThinkPHP5的运行环境要求PHP5.6以上。

目录结构

初始的目录结构如下:

www  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件

├─config                应用配置目录
│  ├─module_name        模块配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置

├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多

├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写

├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  ├─phpunit.xml        phpunit配置文件
│  └─start.php          框架入口文件

├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

router.php用于php自带webserver支持,可用于快速测试 切换到public目录后,启动命令:php -S localhost:8888 router.php 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。

升级指导

原有下面系统类库的命名空间需要调整:

  • think\App => think\facade\App (或者 App )
  • think\Cache => think\facade\Cache (或者 Cache )
  • think\Config => think\facade\Config (或者 Config )
  • think\Cookie => think\facade\Cookie (或者 Cookie )
  • think\Debug => think\facade\Debug (或者 Debug )
  • think\Hook => think\facade\Hook (或者 Hook )
  • think\Lang => think\facade\Lang (或者 Lang )
  • think\Log => think\facade\Log (或者 Log )
  • think\Request => think\facade\Request (或者 Request )
  • think\Response => think\facade\Reponse (或者 Reponse )
  • think\Route => think\facade\Route (或者 Route )
  • think\Session => think\facade\Session (或者 Session )
  • think\Url => think\facade\Url (或者 Url )

原有的配置文件config.php 拆分为app.php cache.php 等独立配置文件 放入config目录。 原有的路由定义文件route.php 移动到route目录

命名规范

ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:

目录和文件

  • 目录不强制规范,驼峰和小写+下划线模式均支持;
  • 类库、函数文件统一以.php为后缀;
  • 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
  • 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

函数和类、属性命名

  • 类的命名采用驼峰法,并且首字母大写,例如 UserUserType,默认不需要添加后缀,例如UserController应该直接命名为User
  • 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 get_client_ip
  • 方法的命名使用驼峰法,并且首字母小写,例如 getUserName
  • 属性的命名使用驼峰法,并且首字母小写,例如 tableNameinstance
  • 以双下划线“__”打头的函数或方法作为魔法方法,例如 __call__autoload

常量和配置

  • 常量以大写字母和下划线命名,例如 APP_PATHTHINK_PATH
  • 配置参数以小写字母和下划线命名,例如 url_route_onurl_convert

数据表和字段

  • 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段,不建议使用驼峰和中文作为数据表字段命名。

参与开发

请参阅 ThinkPHP5 核心框架包

版权信息

ThinkPHP遵循Apache2开源协议发布,并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)

All rights reserved。

ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。

更多细节参阅 LICENSE.txt

关于dawn-api更改的部分

这里再次对dawn-api进行了改动,下面就更改的一些地方进行说明

  1. 优化并使用了自动加载扩展函数,解放了每次都要手动在extraActionList书写的问题

  2. Wiki文档可以使用注解进行标记了,解放了需要在getRules()中写参数才能显示的问题,当然,只是做优化,您还可以写在里面,在这里我主要使用注解方式.下面是注解的用法,以login为例:

    /**
          * @title 用户登录
          * @method login 
          * @param string $phone 账号 true
          * @param string $password 密码 true md5
          * @route('v1/user/login')
          * @return Object User 用户信息
        */
    • @title 接口名称
    • @method 注解的方法,表现为Wiki方法login的接口参数说明
    • @param 参数列表,以一个空格隔开.形如:[数据类型 形参 参数名称 是否必须 备注说明 取值范围]
    • @route 注解路由,在wiki的表现形式是将路由显示在方法后面
    • @return 返回的数据类型,以一个空格隔开.形如:[数据类型 参数名称 备注说明]
    • 完成后的效果:

    注解显示效果

  3. 配合使用ThinkPHP5.1.X的注解路由更家灵活多变,上面的例子就用到了注解路由,更多有关于注解路由请参考

关于dawn-api说明

  1. 为了方便使用这里讲修改过的dawn-api也提交到项目中了
  2. 原先下载是的是没有适配后的dawn-api所以不支持ThinkPHP5.1.X
  3. 关于其他的配置以及wiki的配置,请参见dawn-api的说明
  4. 修改的不太成熟,如有问题请提出

新增了命令行工具

为了方便使用在这里新增了命令行工具,使用命令行工具可以快速的创建API控制器,下面做简单的介绍

  1. 进入项目目录后,输入php ./think可以查看可以使用的命令行,看到了api,就表示可以使用提供的命令行工具了,显示如图:

命令行

  1. 使用命令php ./think api -s first -c news创建一个命名空间为first 名称为news的控制器,运行命令后出现了Success就创建成功了.如图:

wiki文档

  1. 命令执行成功后你会看到在项目中application\first\controller中多出了一个名为News.php的文件,这个就是为你生成的一些方法.

  2. 在生成控制器的同时还在配置文件api_doc.php生成了相应的文档的相关配置,如图:

wiki文档

  1. 打开wiki这时就可以看见基本的相关api的文档说明,如图:

wiki文档

  1. 这时候点击api地址可以测试是否成功(这里使用的是BaseAuth,浏览器提示登录窗口).如图:

wiki文档

需要注意的是因为开启了注解路由,创建成功之后最好执行路由生成工具,重新生成路由.

api命令号的说明

下面主要介绍一下提供的参数,方便您使用

  1. 首先,你可以使用php ./think api -h查看帮助,您将得到的结果如下:

wiki文档

  • -s or --namespace 生成的控制器的命名空间
  • -c or --controller 生成的控制器的名称
  • -i or --id 生成的文档配置的id,默认是根据原配置一次增加
  • -p or --parent 作为一个文档的子节点的父亲id,默认是0顶级节点
  • 看一些列子
  1. php ./think api -s first -c sub -p 5 #为id为5的创建一个字文档,id自增
  2. php ./think api -s first -c sub1 -i 8 #创建一个id为8的文档节点,父级为顶级
  3. php ./think api -s first -c sub2 -i 9 -p 5 #创建一个id为5的创建一个id为9的子级文档节点

运行成功后:

wiki文档02

wiki文档03

wiki文档04

wiki文档04

在线的例子

在线示例WIKI

Postman接口文档

空文件

简介

基于最新的ThinkPHP5.1.10和dawn-api完成的快速搭建restfulAPI,这里修改了一些移植到ThinkPHP5.1.10版本的bug和去除了官方不建议使用的mcrypt_module_open(),改而使用OpenSSL加密方式 展开 收起
PHP 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/jswei/Thinkphp_restful_api.git
git@gitee.com:jswei/Thinkphp_restful_api.git
jswei
Thinkphp_restful_api
Thinkphp Restful API
master

搜索帮助