亚洲精品成人_精品成人一区_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| 欧美成熟视频| 中文字幕欧美日韩一区二区| 欧美自拍资源在线| 国产麻豆一区二区三区在线观看| 国产欧美日韩视频一区二区三区| 欧美精品二区| 欧美日韩1080p| 一区二区免费在线视频| 欧美日本韩国国产| 精品网站在线看| 国产麻豆日韩| 国产伦精品一区二区三区高清| 蜜桃久久av| 麻豆久久久9性大片| 亚洲在线播放| 久久激情婷婷| 久久国产一区二区| 久久精品日韩| 乱码第一页成人| 欧美专区18| 99re6热在线精品视频播放速度| 亚洲一区二区精品在线| 亚洲免费激情| 国产一区二区高清| 久久福利影视| 狠狠色狠狠色综合人人| 国产亚洲欧美另类一区二区三区| 好吊色欧美一区二区三区四区| 不卡一卡2卡3卡4卡精品在| 99re在线| 看欧美日韩国产| 色一情一区二区三区四区| 日韩av大全| 女同性一区二区三区人了人一 | 爱情岛论坛亚洲入口| 国产亚洲福利社区| 日韩精品伦理第一区| 欧美一区精品| 一本色道久久综合亚洲精品高清 | 日韩激情视频| 狠狠色伊人亚洲综合网站色| 亚洲美女网站| 豆国产97在线| 三区精品视频观看| 亚洲国产1区| 久久精品日韩| 日韩激情视频| 亚洲视频播放| 久久一区二区三区欧美亚洲| 伊人色综合久久天天五月婷| 亚洲裸体俱乐部裸体舞表演av| 久久国产精品亚洲77777| 精品在线视频一区二区| 欧美精品91| 美女日韩在线中文字幕| 日韩欧美亚洲日产国产| 亚洲另类黄色| 久久久久欧美| 亚洲国产导航| 久久国产精品 国产精品| 欧美成人一区二区在线| 久久久久久精| 欧美在线免费一级片| 久久aⅴ乱码一区二区三区| 欧美连裤袜在线视频| 亚洲精品国产日韩| 久久伊人资源站| 一区二区三区精品视频在线观看| 久久精品国产理论片免费 | 日本黄网免费一区二区精品| 亚洲欧洲一区二区在线观看| 久久精品欧美| 一区二区三区欧美成人| 亚洲精品日韩在线观看| 3d蒂法精品啪啪一区二区免费| 伊人精品久久久久7777| 99中文字幕| 亚洲久久视频| 日韩不卡av| 国产厕所精品在线观看| 国内揄拍国内精品久久| 蜜桃av噜噜一区二区三区| 国产精品永久| 欧美午夜精品久久久久免费视| 国产视频一区二区三区四区| 99精品免费网| 欧美va天堂| 欧洲精品一区色| 国产高清一区视频| 国产精品日韩高清| 国产综合色产| 中文字幕中文字幕99| 国产精品一区二区在线观看 | 国产精品一区亚洲| 国产中文一区| 亚洲欧美亚洲| 日韩高清国产一区在线观看| 国产精品久久精品国产| 国产精品一区视频| 亚洲毛片一区| 亚洲小说区图片区| 欧美精品激情| 欧美在线视屏| 在线观看欧美激情| 亚洲 日韩 国产第一区| 欧美日韩另类丝袜其他| 国产原创精品| 国产精品三区www17con| 91精品网站| 97视频资源在线观看| 裸体素人女欧美日韩| 亚洲欧美日韩精品久久久| 亚洲高清资源综合久久精品| 精品999网站| 在线欧美亚洲| 一区二区动漫| 亚洲主播在线| 国产99在线播放| 精品日韩美女| 色播亚洲视频在线观看| 翔田千里亚洲一二三区| 在线观看日韩羞羞视频| 一区二区三区四区在线视频| 正在播放亚洲| 亚洲一二三区精品| 一区二区激情| 97人人模人人爽人人喊38tv| 99理论电影网| 欧美激情第六页| 亚洲免费不卡| 亚洲黄色在线| 久久久久久穴| 欧美日韩免费精品| 在线亚洲美日韩| 最新国产拍偷乱拍精品 | 国产成人精品免费视频大全最热 | 欧美激情日韩| 亚洲视频1区| 国产福利久久精品| 日本一区高清在线视频| 欧美在线视频二区| 国产欧美亚洲一区| 国产成人免费电影| 神马影院我不卡午夜| 国内久久精品| 91在线在线观看| 久久精品国产理论片免费 | 中文精品一区二区三区 | 一区二区三区四区五区精品| 久久亚洲午夜电影| 丝袜美腿玉足3d专区一区| 黄色成人在线网站| 久热这里只精品99re8久| 麻豆传媒一区二区| 亚洲国产精品一区在线观看不卡| 狠狠色伊人亚洲综合网站色| 亚洲一区二区精品在线| 鲁丝一区鲁丝二区鲁丝三区| 欧美日韩免费观看一区| 亚洲免费中文| 无遮挡亚洲一区| 国产精品裸体一区二区三区| 久久综合中文色婷婷| 亚洲黑丝一区二区| 蜜桃成人在线| 亚洲一区观看| 亚洲欧美国产不卡| 久久综合九色综合网站| 亚洲激情一区二区三区| 久久久久久夜| 午夜精品国产| 国内精品久久国产| 国产欧美日本在线| 亚洲精品视频一二三| 91中文字精品一区二区| 国产精品大片免费观看| 国产乱码精品一区二区三区日韩精品| 欧美一区91| 国外成人在线视频网站| 9久re热视频在线精品| 亚洲高清视频一区| 国产欧美日韩亚洲| 99热在线精品观看| 午夜一区二区三区| 久久精品成人一区二区三区蜜臀 | 女同一区二区| 日韩黄色影视| 久久精品magnetxturnbtih| 蜜桃av久久久亚洲精品| 在线成人欧美| 欧美日韩三级电影在线| 日韩久久精品一区二区三区| 国产高清精品一区二区三区|