亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

安裝

composer require easyswoole/http-annotation=3.x

組件要求

  • php: >=8.1
  • ext-json: *
  • psr/http-message: ^1.0
  • easyswoole/http: 3.x
  • ext-mbstring: *
  • ext-dom: *
  • ext-simplexml: *
  • ext-libxml: *
  • easyswoole/parsedown: ^1.0

注意:用戶在使用 EasySwoole 注解控制器 進行 EasySwoole 項目開發時,仍需要 use 注解相對應的命名空間。這顯然不是一個高效的做法。我們推薦在 PhpStorm 環境下進行開發,并且在 PhpStorm 中安裝 Jetbrain 自帶的 PHP Annotation 組件,可以提供注解命名空間自動補全、注解屬性代碼提醒、注解類跳轉等非常有幫助的。(PhpStorm 2019 以上版本的 IDE,該組件可能不能正常使用。)

組件優勢

在使用 EasySwoole Http 注解控制器組件進行開發時,可以很方便地生成 API 接口文檔,可以極大地提高了我們 phper 的開發效率。具體如何使用請看 自動注解文檔 章節。

IDE 提示

當代碼中使用注解與 EasySwoole 提供的 Param 沖突,無法實現 IDE 提示,可以使用別名的方式去使用 EasySwooleParam 注解,代碼如下。

<?php
namespace App\HttpController;

use EasySwoole\HttpAnnotation\AnnotationController;
use EasySwoole\HttpAnnotation\Attributes\Param as ReqParam;
use EasySwoole\HttpAnnotation\Enum\ParamFrom;
use EasySwoole\HttpAnnotation\Validator\Required;

class Index extends AnnotationController
{
    #[ReqParam(
        name: "deviceId",
        from: ParamFrom::JSON,
        validate: [
            new Required("deviceId is required.")
        ]
    )]
    function reportAction()
    {

    }
}

實現原理

注解控制器,完整命名空間為 EasySwoole\HttpAnnotation\AnnotationController,是繼承自 use EasySwoole\Http\AbstractInterface\Controller的子類。它重寫了父類的__hook方法,從而實現對注解控制器的支持。

__hook

__hook 方法中,自動解析使用在當前控制器類上的注解。 該方法是承接 Dispatcher 與控制器實體邏輯的橋梁。在該方法中,注解控制器做了以下事情:

  • 檢查當前請求的 http 請求方法是否在當前控制器類的 action 允許的請求方法范圍內,來實現過濾非法請求的目的(前提:使用了 Api 注解的 allowMethod 屬性限制)。
  • 讀取在控制器類的 action 中使用的 Api 注解信息,讀取在控制器類的 (非靜態非只讀的 publicprotected 修飾的) 成員變量中使用的 Context/Di/Inject 注解信息并自動給成員變量賦值。
  • 檢查并執行成員變量注解邏輯
  • 檢查 onRequest 函數注解參數并執行注解參數邏輯校驗
  • 檢查使用在 action 上的注解標簽并進行參數校驗與邏輯校驗

基礎示例

<?php
namespace App\HttpController;

use EasySwoole\EasySwoole\Trigger;
use EasySwoole\HttpAnnotation\AnnotationController;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Exception\ValidateFail;
use EasySwoole\HttpAnnotation\Validator\Required;

class Index extends AnnotationController
{
    #[Param(
        name: "name",
        validate: [
            new Required("")
        ]
    )]
    #[Param(
        name: "age",
        validate: [
            new Required("")
        ]
    )]
    public function index()
    {
        $data = $this->request()->getRequestParam();
        $this->response()->write("your name is {$data['name']} and age {$data['age']}");
    }

    public function onException(\Throwable $throwable): void
    {
        if ($throwable instanceof ValidateFail) {
            $this->response()->withHeader('Content-type', 'text/html;charset=utf-8');
            $this->response()->write("字段【{$throwable->getFailRule()->currentCheckParam()->name}】校驗錯誤");
        } else {
            Trigger::getInstance()->throwable($throwable);
        }
    }
}

在以上代碼中,會自動對 nameage 字段進行校驗,當校驗失敗時,拋出一個異常,校驗成功則進入 index action 邏輯。具體請看成員屬性注解章節。

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    久久久av水蜜桃| 久久久福利视频| 日韩久久不卡| 日韩欧美亚洲日产国| 一区二区精品在线| 国产一区自拍视频| 久久久久久久波多野高潮日日| 久久精品一区| 日韩激情视频| 亚洲小说欧美另类社区| 一区二区三区免费看| 91在线在线观看| 欧美在线播放一区| 在线欧美一区| 国产精品一级久久久| 日本一区不卡| 在线成人www免费观看视频| 欧美一级视频| 久久久久久久有限公司| 欧美久久久久| 成人av片网址| 激情欧美日韩| 激情视频一区二区| 国内一区二区三区在线视频| 久久九九电影| 欧美精品麻豆| 久久久久久黄| 午夜欧美理论片| 7777奇米亚洲综合久久| 综合操久久久| 国产美女精品在线观看| 欧美精品亚洲| 久久99精品国产一区二区三区| 国产精品国产三级国产专区53| 另类亚洲自拍| 在线欧美日韩| 亚洲春色在线| 国产一区二区三区四区五区在线 | 97久久天天综合色天天综合色hd| 亚洲精美视频| 懂色中文一区二区三区在线视频 | 国外成人免费视频| 亚洲一级电影| 日本在线观看一区| 久久综合给合久久狠狠色| 欧美三级第一页| 免费在线观看一区二区| 性色一区二区三区| 国产精品多人| 日韩在线电影一区| 97人摸人人澡人人人超一碰| 欧美1区2区| 欧美日韩在线精品一区二区三区| 免费精品视频| 亚洲精品乱码| 午夜精品久久99蜜桃的功能介绍| 国语精品中文字幕| 久久精品官网| 亚洲国产精品久久久久久女王| 欧美日韩综合精品| 好吊色欧美一区二区三区| 欧美一区=区| 一区二区三区免费看| 亚洲性感美女99在线| 一本色道久久99精品综合| 久久精品五月婷婷| 国产精品theporn88| 久久精品毛片| 欧美综合国产| 香蕉久久夜色精品| 国产精品一区毛片| 一级成人国产| 国产精品美女xx| 国产视频在线观看一区| 国产精品一区在线播放| 一本久久知道综合久久| 亚洲精品美女| 日韩视频在线播放| 国产精品亚洲不卡a| 免费视频一区| 超碰国产精品久久国产精品99| 91蜜桃网站免费观看| 超碰97在线人人| 久久久久久九九| 五月天亚洲综合情| 女人色偷偷aa久久天堂| 欧美激情性爽国产精品17p| 欧美影视一区| 亚洲黄色影片| 久久天堂精品| 精品伦精品一区二区三区视频| 久久99蜜桃综合影院免费观看| 久久99精品国产99久久| 欧美一区国产一区| 中文字幕一区二区三区有限公司 | 欧美三区在线| 国产精品色网| 福利视频一区二区三区| 日本欧美精品久久久| 综合久久国产| 国产亚洲精品v| 国产一区二区不卡视频在线观看| 欧美日韩亚洲一区二区三区四区| 一区二区三区四区| 国产一区二区你懂的| 91亚洲精品丁香在线观看| 欧美精品亚洲精品| 欧美激情亚洲| 91在线在线观看| 色综合666| 亚洲久久一区| 国产精品久久国产三级国电话系列 | 一区二区免费在线视频| 国产精品一区视频| 在线看成人av电影| 亚洲制服少妇| 日本在线播放一区| 亚洲精选一区| 欧美三级电影在线播放| 一区三区视频| 欧美日韩精品一区| 国产字幕视频一区二区| av色综合网| 国内精品久久久久国产盗摄免费观看完整版 | 激情综合中文娱乐网| 99久久99久久精品国产片| 亚洲国产精品一区二区第一页| 亚洲伊人观看| 中文字幕人成一区| 国产精品区一区二区三含羞草| 欧美日韩精品| 国产乱码精品一区二区三区不卡| 亚洲欧美在线网| 国产欧美一区二区视频| 亚洲精选91| 中文字幕久久综合| 99在线影院| 91久久在线| 亚洲欧美影院| 国产一区免费视频| 国产亚洲精品久久久久婷婷瑜伽| 亚洲无玛一区| 乱一区二区三区在线播放| 国产日本精品| 国产精品黄色| 亚洲欧洲三级| 九九九九九精品| 91一区二区三区| 国产日韩一区二区三区| 中文精品视频一区二区在线观看| 精品乱子伦一区二区三区| 亚洲欧美久久| 亚洲成人在线视频网站| 中文字幕一区综合| 欧洲一区二区日韩在线视频观看免费| 国产毛片一区| 红桃视频欧美| 亚洲欧美在线网| 欧美一区激情| 亚洲一区bb| 天堂精品视频| 先锋影音日韩| 欧美在线播放一区二区| 国产欧美日韩综合一区在线观看| 男女av一区三区二区色多| 一区二区日韩免费看| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲不卡1区| 欧美日韩一区在线视频| 国产在线一区二区三区四区| 久热精品在线| 久久久久久精| 99re国产视频| 999国内精品视频在线| 18成人在线| 风间由美一区二区三区| 国产91精品一区二区绿帽| 成人av电影免费| 黑人另类av| 女人一区二区三区| 天堂一区二区三区| 中文字幕一区二区三区在线乱码 | 一区二区三区三区在线| 亚洲毛片在线| 国产亚洲亚洲| 久久综合中文色婷婷| 国产精品一区二区三区在线观| 国产一区精品视频| 欧洲一区二区在线| 欧美一区二区| 伊人久久大香线蕉av超碰演员| 99精品国产在热久久婷婷| 亚洲欧美成人综合| 国产精品区一区二区三在线播放| 精品国产免费久久久久久尖叫| 美媛馆国产精品一区二区| 一区二区三区不卡在线| 亚洲国产欧美不卡在线观看| 国产精品最新自拍| 精品国产日本|