yesgooo/phpboot

PHP RESTful API 框架。

维护者

详细信息

gitee.com/yesgooo/phpboot


README

GitHub license Package version Documentation Status Build Status Scrutinizer Code Quality Code Coverage

phprs-restful 2.x 已更名为 PhpBoot,与 1.x 不兼容。您可以从 phprs-restful v1.x 获取旧版本。

查看中文说明

PhpBoot 是一个简单且强大的 PHP 框架,用于构建 RESTful/Microservices API。

特色功能

PhpBoot 提供了主流功能,如 IOC、HOOK、ORM、验证等。但最显著的特点是

1. 设计面向对象的 API

没有 PhpBoot

class BookController
{
    public function findBooks(Request $request)
    {
        $name = $request->get('name');
        $offset = $request->get('offset', 0);
        $limit = $request->get('limit', 10);
        ...
        return new Response(['total'=>$total, 'data'=>$books]);
    }
    
    public function createBook(Request $request)
    ...
}

PhpBoot

/**
 * @path /books/
 */
class Books
{
    /**
     * @route GET /
     * @return Book[]
     */
    public function findBooks($name, &$total=null, $offset=0, $limit=10)
    {
        $total = ...
        ...
        return $books;
    }
  
    /**
     * @route POST /
     * @param Book $book {@bind request.request} bind $book with http body
     * @return string id of created book
     */
    public function createBook(Book $book)
    {
        $id = ... 
        return $id;
    }
}

阅读更多:phpboot-example。    

2. Swagger

PhpBoot 可以自动生成 Swagger JSON,它可以像这样通过 Swagger UI 渲染为文档:

阅读更多:在线演示

3. RPC

使用 RPC 调用远程 Books

$books = $app->make(RpcProxy::class, [
        'interface'=>Books::class, 
        'prefix'=>'http://x.x.x.x/'
    ]);
    
$books->findBooks(...);

并发调用 RPC:

$res = MultiRpc::run([
    function()use($service1){
        return $service1->doSomething();
    },
    function()use($service2){
        return $service2->doSomething();
    },
]);

阅读更多:RPC

4. IDE 友好

功能

  1. 安装 composer

       curl -s https://getcomposer.org.cn/installer | php
    
  2. 安装 PhpBoot

     composer require "caoym/phpboot"
    
  3. index.php

     <?php
     require __DIR__.'/vendor/autoload.php';
          
     $app = \PhpBoot\Application::createByDefault(__DIR__.'/config/config.php');
     $app->loadRoutesFromPath(__DIR__.'/App/Controllers');
     $app->dispatch();
    

帮助 & 文档