[寫了一個玩具] 引數注入

月亮☪發表於2021-07-20

使用依賴注入提供請求引數注入功能

Thinkphp >= 6.0

Laravel >= 5.0

composer require cxx/param-inject

  1. 新增服務(支援tp和laravel)

    服務使用方式請檢視官方文件(Thinkphp, Laravel)

    Thinkphp:Cxx\ParamInject\ThinkParamService

    Laravel:Cxx\ParamInject\LaravelParamService

  2. 建立引數類(名稱空間隨意,只要能被載入)

    use Cxx\ParamInject\Param;
    
    /**
     * 分頁引數類(所有引數類都需要繼承 Cxx\ParamInject\Param)
     */
    class Page extends Param
    {
        // 屬性訪問性必須是 public
        /**
         * @var int
         */
        public $page = 1;
    
        // 註釋規則必須要有 @var 後面跟屬性型別
        /**
         * @var int
         */
        public $limit = 10;
    
        // 也可以寫在行內
        /** @var int */
        public $limit = 10;
    
        // 不帶預設值,均為 null
        /** @var int */
        public $limit;
    }
  3. 使用

    控制器中

    public function index(Page $page)
    {
        dd($page);
    }
    

    在路由閉包中也類似

    Route::post('/test', function (Page $page) {
        dd($page);
    });

    使用方式在ThinkphpLaravel中一致

基礎型別

示例 備註
@var int 或 @var integer 整形
@var string 字串
@var bool 或 @var boolean 布林型別
@var float 或 @var double 浮點型
@var mixed 此型別不會對資料進行轉換

以上型別支援陣列形式 如@var int[] @var int[][]

複合型別

示例 備註
@var Page 物件型別,Page是繼承Cxx\ParamInject\Param的物件
@var Page[] 物件陣列型別

物件型別裡面的屬性可以是基礎型別還可以是複合型別

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章