【PhpBoot】 爲快速開發 RESTful API 設計的PHP框架

PhpBoot

GitHub licensePackage versionBuild StatusScrutinizer Code QualityCode Coverage

PhpBoot 是爲快速開發 RESTful API 設計的PHP框架。它能夠幫助開發者更聚焦在業務自己, 而將原來開發中不得不作, 但又重複枯燥的事情丟給框架, 好比編寫接口文檔、參數校驗和遠程調用代碼等。php

特點

PhpBoot 框架提供許多主流的特性, 如ORM、依賴注入等。 這些特性都通過精心設計和選擇(有些是第三方開源代碼,如 PHP-DI),但和其餘框架相比較, PhpBoot 最顯著的特點是:html

1. 以面向對象的方式編寫接口

你確定看到過這樣的代碼:git

// **不用** 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)
    ...
}

不少主流框架都須要用相似代碼編寫接口。但這種代碼的一個問題是, 方法的輸入輸出隱藏在實現裏, 這不是一般咱們提倡的編碼方式。若是你對代碼要求更高, 你可能還會實現一層 Service 接口, 而在 Controller 裏只是簡單的去調用 Service 接口。而使用 PhpBoot, 你能夠用更天然的方式去定義和實現接口。上面的例子, 在 PhpBoot 框架中實現是這樣的:github

/**
 * @path /books/
 */
class Books
{
    /**
     * @route GET /
     * @return Book[]
     */
    public function findBooks($name, &$total=null, $offset=0, $limit=10)
    {
        ...
        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 編寫的代碼更符合面向對象編程的原則, 以上代碼完整版本請見phpboot-example
   編程

2. 輕鬆支持 Swagger

Swagger是目前最流行的接口文檔框架。雖然不少框架均可以經過擴展支持Swagger, 但通常不是須要編寫不少額外的註釋, 就是隻能導出基本的路由信息, 而不能導出詳細的輸入輸出參數。而 PhpBoot 能夠在不增長額外編碼負擔的狀況下, 輕鬆去完成上述任務,下圖爲findBooks對應的文檔。更多內容請見文檔在線 Demojson

3. 簡單易用的分佈式支持

使用 PhpBoot 能夠很簡單的構建分佈式應用。經過以下代碼, 便可輕鬆遠程訪問上面示例中的 Books 接口:併發

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

同時還能夠方便的發起併發請求, 如:app

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

更多內容請查看文檔composer

4. IDE 友好

IDE 的代碼提示功能可讓開發者輕鬆很多, 但不少框架在這方面作的並很差, 你必須看文檔或者代碼, 才能知道某個功能的用法。PhpBoot 在一開始就很是注重框架的 IDE 友好性, 儘量讓框架保持準確的代碼提示。好比下圖是 DB 庫在 PhpStorm 下的使用:框架

主要特性

安裝和配置

  1. 安裝 composer (已安裝可忽略)

    curl -s http://getcomposer.org/installer | php
  2. 安裝 PhpBoot

    composer require "caoym/phpboot"
  3. index.php 加載 PhpBoot

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

幫助和文檔

  • 在線文檔

  • QQ 交流羣:185193529

  • 本人郵箱 caoyangmin@gmail.com

相關文章
相關標籤/搜索