php 架構(gòu) 推薦,為快速開發(fā)API設(shè)計的特色框架/-
2021-10-31
推薦,一個專為快速API開發(fā)而設(shè)計的PHP框架,它可以幫助開發(fā)者更多地關(guān)注業(yè)務(wù)本身,將原來開發(fā)中不得不做卻又重復(fù)的枯燥的事情,比如編寫接口文檔、參數(shù)校驗和遠(yuǎn)程調(diào)用代碼等。
特征
框架提供了很多主流的特性,比如IOC、AOP、ORM等,這些特性都是經(jīng)過精心設(shè)計和挑選的(有些是第三方開源代碼,比如PHP-DI)php 架構(gòu),但是與其他框架相比,最顯著的特點是:
1. 以面向?qū)ο蟮姆绞骄帉懡涌?/p>
你一定見過這樣的代碼:
// **不用** PhpBoot 的代碼
class BookController
{
public function findBooks(Request $request)
{
$name = $request->get('name');
...
return new Response(['total'=>$total, 'data'=>$books]);
}
public function createBook(Request $request)
...
}
許多主流框架都需要編寫類似代碼的接口。但是這種代碼的一個問題是方法的輸入和輸出隱藏在實現(xiàn)中,這不是我們通常提倡的編碼方法。如果對代碼有更高的要求,也可以實現(xiàn)一層接口,直接調(diào)用里面的接口即可。并且使用,你可以更自然地定義和實現(xiàn)接口。上面的例子,在框架中實現(xiàn)是這樣的:
/**
* @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;
}
}
上面兩段代碼執(zhí)行的效果是一樣的??梢钥吹綄懗龅拇a更符合面向?qū)ο缶幊痰脑瓌t。上述代碼的完整版本請參見/-。
2. 輕松支持
是目前最流行的界面文檔框架。雖然通過擴(kuò)展可以支持很多框架,但是一般不需要寫很多額外的注釋,或者只能導(dǎo)出基本的路由信息??,但是不能導(dǎo)出詳細(xì)的輸入輸出參數(shù)。并且您可以輕松完成上述任務(wù),而不會增加額外的編碼負(fù)擔(dān)。下圖顯示了相應(yīng)的文檔。有關(guān)更多信息,請參閱 2.0 文檔和在線演示。
3. 簡單易用的分布式支持
使用可以非常簡單地構(gòu)建分布式應(yīng)用程序。通過下面的代碼,可以很方便的遠(yuǎn)程訪問上例中的界面:
$books = $app->make(RpcProxy::class, [
'interface'=>Books::class,
'prefix'=>'http://x.x.x.x/'
]);
$books->findBooks(...);
同時可以方便的發(fā)起并發(fā)請求,比如:
$res = MultiRpc::run([
function()use($service1){
return $service1->doSomething();
},
function()use($service2){
return $service2->doSomething();
},
]);
更多信息請查看RPC-2.0文檔
4. IDE 友好
IDE的代碼提示功能可以讓開發(fā)者輕松很多,但是很多框架在這方面做得并不好。您必須閱讀文檔或代碼才能了解某個函數(shù)的用法。一開始,我們非常關(guān)注框架的IDE友好性,并通過代碼提示盡可能保持框架的準(zhǔn)確性。例如下圖展示了DB庫的使用:
如您所見,IDE 的提示符合 SQL 語法規(guī)則php 架構(gòu),而不是簡單地列出所有 SQL 命令。
主要功能幫助和文檔
-2.0 個文件