Dies ist ein leichtes Framework, das für die schnelle Entwicklung von RESTful-Schnittstellen entwickelt wurde. Wenn Sie wie ich es satt haben, das traditionelle MVC-Framework zum Schreiben von Microservices oder API-Schnittstellen mit separatem Front-End und Back-End zu verwenden, und eine Menge redundanter Codierung (und STRG-C/STRG-V) nicht ertragen können, Wenn Sie eine einfache Benutzeroberfläche suchen, werden Sie diesen Rahmen auf jeden Fall lieben!
Lassen Sie mich zunächst ein Beispiel geben
1. Schreiben Sie HelloWorld.php und legen Sie es in dem vom Framework angegebenen Verzeichnis ab (der Standardwert ist das Verzeichnis apis/auf derselben Ebene wie index.php)
/** * @path("/hw") */ class HelloWorld { /** * @route({"GET","/"}) */ public function doSomething() { return "Hello World!"; } }
2. Geben Sie http://your-domain/hw/
in den Browser ein und Sie werden sehen: So einfach ist das, keine zusätzliche Konfiguration, keine Vererbung oder Kombination erforderlich .
Was ist passiert?
Rückblickend auf HelloWorld.php sind die Anmerkungen (@path, @route) das Besondere. Ja, das Framework erhält Routing-Informationen und bindet Eingabe und Ausgabe durch Anmerkungen. Aber machen Sie sich keine Sorgen um die Leistung, Anmerkungen werden nur einmal analysiert, nachdem die Klassendatei geändert wurde. Weitere @-Kommentare werden später erläutert.
Sehen Sie sich ein konkreteres Beispiel an
Dies ist ein Beispiel für eine Anmeldeschnittstelle
/** * 用户权限验证 * @path("/tokens/") */ class Tokens { /** * 登录 * 通过用户名密码授权 * @route({"POST","/accounts/"}) * @param({"account", "$._POST.account"}) 账号 * @param({"password", "$._POST.password"}) 密码 * * @throws ({"InvalidPassword", "res", "403 Forbidden", {"error":"InvalidPassword"} }) 用户名或密码无效 * * @return({"body"}) * 返回token,同cookie中的token相同, * {"token":"xxx", "uid" = "xxx"} * * @return({"cookie","token","$token","+365 days","/"}) 通过cookie返回token * @return({"cookie","uid","$uid","+365 days","/"}) 通过cookie返回uid */ public function createTokenByAccounts($account, $password, &$token,&$uid){ //验证用户 $uid = $this->users->verifyPassword($account, $password); Verify::isTrue($uid, new InvalidPassword($account)); $token = ...; return ['token'=>$token, 'uid'=>$uid]; } /** * @property({"default":"@Users"}) 依赖的属性,由框架注入 * @var Users */ public $users; }
Was kann sonst noch getan werden
Abhängigkeitsmanagement (Abhängigkeit Injektion ),
Schnittstellendokumente automatisch ausgeben (keine Klassen- und Methodendokumente im Doxgen-Stil, sondern Dokumente, die http-Schnittstellen beschreiben)
Schnittstellencache
Hook
Zugriff auf die Datenbank mit ezsql
ezsql ist ein einfaches objektorientiertes SQL-Erstellungstool, das einfache grundlegende SQL-Operationen bereitstellt.
Schnittstelle
/** @path(/myclass) */ class MyClass{ /** * @route({"GET","/do"}) * @param({"arg0","$._GET.arg0"}) */ public doSomething($arg0){ return Sql::select('xxx')->from('table_xxx')->where( 'xxx = ?', $arg0)->get($this->db); } /** * 依赖注入PDO实例 * @property * @var PDO */ public $db; }
Konfigurationsdatei
{ { "MyClass":{ "properties":{ "db":"@db1" } }, }, "db1":{ "singleton":true, "class":"PDO", "pass_by_construct":true, "properties":{ "dsn":"mysql:host=127.0.0.1;dbname=xxx", "username":"xxxx", "passwd":"xxxx" } }, }
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Weitere Artikel zum Schreiben von RESTful-Schnittstellen in PHP finden Sie auf der chinesischen PHP-Website!