成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel 開發(fā)輔助工具

stormjun / 3502人閱讀

摘要:按照最初提出者的介紹,是銜接數(shù)據(jù)映射層和領(lǐng)域?qū)又g的一個(gè)紐帶,作用相當(dāng)于一個(gè)在內(nèi)存中的域?qū)ο蠹?。客戶端?duì)象把查詢的一些實(shí)體進(jìn)行組合,并把它們提交給。同時(shí)支持登錄過期時(shí)間設(shè)置,登錄之前,登錄之后事件處理。

laravel 開發(fā)輔助工具 配置 添加服務(wù)提供商

將下面這行添加至 config/app.php 文件 providers 數(shù)組中:

"providers" => [
  ...
  AppPluginsAuthProvidersLaravelServiceProvider::class
 ]
插件及文檔

redisToken認(rèn)證

Repository 模式

表單搜索輔助插件

Excels導(dǎo)出輔助插件

Sign 加簽

Sql 寫進(jìn)日志-事件

Controller Traits

Repository 模式 插件介紹

首先需要聲明的是設(shè)計(jì)模式和使用的框架以及語言是無關(guān)的,關(guān)鍵是要理解設(shè)計(jì)模式背后的原則,這樣才能不管你用的是什么技術(shù),都能夠在實(shí)踐中實(shí)現(xiàn)相應(yīng)的設(shè)計(jì)模式。

按照最初提出者的介紹,Repository 是銜接數(shù)據(jù)映射層和領(lǐng)域?qū)又g的一個(gè)紐帶,作用相當(dāng)于一個(gè)在內(nèi)存中的域?qū)ο蠹???蛻舳藢?duì)象把查詢的一些實(shí)體進(jìn)行組合,并把它 們提交給 Repository。對(duì)象能夠從 Repository 中移除或者添加,就好比這些對(duì)象在一個(gè) Collection 對(duì)象上進(jìn)行數(shù)據(jù)操作,同時(shí)映射層的代碼會(huì)對(duì)應(yīng)的從數(shù)據(jù)庫中取出相應(yīng)的數(shù)據(jù)。

從概念上講,Repository 是把一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)的數(shù)據(jù)給封裝成對(duì)象的集合并提供了對(duì)這些集合的操作。

Repository 模式將業(yè)務(wù)邏輯和數(shù)據(jù)訪問分離開,兩者之間通過 Repository 接口進(jìn)行通信,通俗點(diǎn)說,可以把 Repository 看做倉庫管理員,我們要從倉庫取東西(業(yè)務(wù)邏輯),只需要找管理員要就是了(Repository),不需要自己去找(數(shù)據(jù)訪問),具體流程如下圖所示:

創(chuàng)建 Repository 不使用緩存
php artisan make:repo User
使用緩存
php artisan make:repo User --cache
創(chuàng)建 UserRepository 時(shí)會(huì)詢問是否創(chuàng)建Model ,如果Model以存在,需要把 AppRepositoriesModulesUserProvider::class 的Model替換成當(dāng)前使用的Model
配置Providers

將下面這行添加至 AppProvidersAppServiceProvider::class 文件 register 方法中:

public function register()
{
    $this->app->register(AppRepositoriesModulesUserProvider::class);
}
使用
repo = $repo;
    }

    public function index(Request $request){
        return $this->respondWithSuccess($this->repo->get(["*"]));
    }
}
配合 Search 更靈活
public function index(Request $request){
        return $this->respondWithSuccess(
            $this->repo->getwhere(
                new IndexSearch($request->olny(["name"])) ,
                ["*"]
            )
        );
    }
方法
參考 Repository 方法
表單搜索輔助插件 插件介紹

把表單提交的一些參數(shù)傳換成 where 語句.

創(chuàng)建 Search

生成一個(gè)UserController::index控制器使用的搜索輔助類

php artisan make:search UserIndexSearch

上面命令會(huì)創(chuàng)建一個(gè) AppSearchsModulesUserIndexSearch::class 的類

創(chuàng)建Search時(shí),建議根據(jù) ControllerActionSearch 的格式創(chuàng)建。
編寫Search
 "=",
        "name"  => "like",
        "date" => "between"
    ];
        
    public function getNameAttribute($value)
    {
        return $value . "%";
    }
    
    public function getDateAttribute($value){
        return function ($query){
            $query->where("date", ">", "2018-05-05")->where("status", 1);
        };
    }
}
使用Search
repo = $repo;
    }

    public function index(Request $request){
        return $this->respondWithSuccess(
            $this->repo->getWhere(
                new IndexSearch(
                    $request->only(["phone", "name", "date"])
                ), 
                ["*"]
            )
          );
    }
}
生成的sql

請(qǐng)求參數(shù):

phone=18565215214&name=成龍&date=2018-08-21

生成的sql

WHERE (phone = 18565215214) AND (name like "成龍%") AND (date > "2018-05-05" AND status = 1)
Excels導(dǎo)出輔助插件 插件介紹

Excels導(dǎo)出輔助插件

創(chuàng)建 Excels
php artisan make:excel User

上面命令會(huì)創(chuàng)建一個(gè) AppExcelsModulesUserExcel::class 的類

編寫Search
id,
            $this->phone,
            $this->name
        ];
    }


    /**
     * 搜索參數(shù)
     * @return {[type]} [description]
     */
    protected function getAttributes()
    {
        return new ExcelSearch(request()->only([
            "phone",
            "name",
        ]));
    }


}
更多用法 請(qǐng)參考 maatwebsite/excel
Sql 寫進(jìn)日志-事件 介紹

把sql語句記錄到日志里

使用

在 laravel 自帶的 EventServiceProvider 類里 listen 添加

 "IlluminateDatabaseEvents" => [
    "luffyzhaolaravelToolsListenersQueryListeners"
 ]
生成事件
php artisan event:generate
Controller Traits 介紹

controller公用方法

使用方法

在 AppHttpControllersController 類中 use luffyzhaolaravelToolsTraitsResponseTrait

Sign 加簽 插件介紹

請(qǐng)求參數(shù)加簽驗(yàn)證

配置 Sign

如果你使用的是md5加簽方式請(qǐng)?jiān)赾onfig/app.php文件中,添加 sign_key 配置。如果你使用的是Rsa加簽方式請(qǐng)?jiān)赾onfig/app.php文件中,添加app.sign_rsa_private_key和app.sign_rsa_public_key配置

配置中間件

在app/Http/Kernel.php文件中,您需要把 "sign" => luffyzhaolaravelToolsMiddlewareVerifySign::class, 添加到$routeMiddleware屬性中

使用
 "sign:api"],
    function($route){
        Route::get("xxx", "xxx");
    }
);
加簽方式

rsamd5

參數(shù)排序

準(zhǔn)備參數(shù)

添加 timestamp 字段

然后按照字段名的 ASCII 碼從小到大排序(字典序)

生成 url 參數(shù)串

拼接 key 然后 md5 或者 rsa

如下所示:

{
    "name": "4sd65f4asd5f4as5df",
    "aimncm": "54854185",
    "df4": ["dfadsf"],
    "dfsd3": {
        "a": {
            "gfdfsg": "56fdg",
            "afdfsg": "56fdg"
        }
    }
}

排序后:

{
    "aimncm": "54854185",
    "df4": ["dfadsf"],
    "dfsd3": {
        "a": {
            "afdfsg": "56fdg",
            "gfdfsg": "56fdg"
        }
    },
    "name": "4sd65f4asd5f4as5df",
    "timestamp": "2018-05-29 17:25:34"
}

生成url參數(shù)串:

aimncm=54854185&df4[0]=dfadsf&dfsd3a=56fdg&dfsd3a=56fdg&name=4sd65f4asd5f4as5df×tamp=2018-05-29 17:25:34

拼接 key :

aimncm=54854185&df4[0]=dfadsf&dfsd3a=56fdg&dfsd3a=56fdg&name=4sd65f4asd5f4as5df×tamp=2018-05-29 17:25:34base64:Z9I7IMHdO+T9qD3pS492GWNxNkzCxinuI+ih4xC4dWY=

md5加密

ddab78e7edfe56594e2776d892589a9c
redis-token 認(rèn)證 插件介紹

把token保存在redis。同時(shí)支持登錄過期時(shí)間設(shè)置,登錄之前,登錄之后事件處理。

配置 Auth guard

在 config/auth.php 文件中,你需要將 guards/driver 更新為 redis-token:

"defaults" => [
    "guard" => "api",
    "passwords" => "users",
],

...

"guards" => [
    "api" => [
        "driver" => "redis-token",
        "provider" => "users",
    ],
],
更改 Model

如果需要使用 redis-token 作為用戶認(rèn)證,我們需要對(duì)我們的 User 模型進(jìn)行一點(diǎn)小小的改變,實(shí)現(xiàn)一個(gè)接口,變更后的 User 模型如下:

getKey();
    }
}
登錄
  /**
       * 登錄
       * @method store
       * @param StoreRequest $request
       *
       * @return IlluminateHttpJsonResponse
       *
       * @author [email protected]
       */
      public function store(StoreRequest $request)
      {
          $token = auth("api")->attempt(
              $request->only(["phone", "password"])
          );
          
          if (!$token) {
              return $this->respondWithError("用戶不存在,或者密碼不正確!");
          }
          
          return $this->respondWithToken((string) $token);
      }
退出
/**
     * 退出登錄.
     *
     * @method logout
     *
     * @return IlluminateHttpJsonResponse
     *
     * @author [email protected]
     */
    public function logout()
    {
        auth("api")->logout();

        return $this->respondWithSuccess([], "退出成功");
    }
事件

方法

方法

方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29168.html

相關(guān)文章

  • 下載量最高 100 個(gè) Laravel 擴(kuò)展包推薦

    摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū),后續(xù)更新將以帖子內(nèi)容和內(nèi)容為準(zhǔn)。說明另一個(gè)令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來的,是繁華的擴(kuò)展包生態(tài)。本文對(duì)上打了標(biāo)簽的擴(kuò)展包進(jìn)行整理,截止到現(xiàn)在年月號(hào),有超過個(gè)擴(kuò)展包,以下是下載量最大的個(gè)。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū),后續(xù)更新將以 PHPHub 帖子內(nèi)容 和 GitHub 內(nèi)容 為準(zhǔn)。 說明 Laravel 另一個(gè)令人喜歡的地方...

    Tychio 評(píng)論0 收藏0
  • Laravel框架的體系結(jié)構(gòu)

    摘要:開發(fā)人員可以通過命令行工具生成和管理項(xiàng)目環(huán)境。附帶了一個(gè)名為的優(yōu)秀的命令行工具它提供了一些開發(fā)過程中有用的命令用,可以用來生成框架代碼和數(shù)據(jù)庫管理。這就是的目錄結(jié)構(gòu)發(fā)揮作用的地方。 Laravel被稱為全棧式框架,因?yàn)樗軌蛱幚韽木W(wǎng)絡(luò)服務(wù)到數(shù)據(jù)庫管理、HTML生成的一切事情,垂直集成的web開發(fā)環(huán)境給開發(fā)者提供了更好的體驗(yàn)。 開發(fā)人員可以通過命令行工具,生成和管理Laravel項(xiàng)目環(huán)...

    ACb0y 評(píng)論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評(píng)論0 收藏0
  • laravel框架應(yīng)用和composer擴(kuò)展包開發(fā)

    摘要:官方地址是目前最流行的框架,發(fā)展勢(shì)頭迅猛,應(yīng)用非常廣泛,有豐富的擴(kuò)展包可以應(yīng)付你能想到的各種應(yīng)用場(chǎng)景,框架思想前衛(wèi),跟隨時(shí)代潮流,提倡優(yōu)雅代碼,自稱為工匠,其中的模板引擎容器以及擴(kuò)展包為業(yè)務(wù)的開發(fā)提供了極大的便利。 laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,發(fā)展勢(shì)頭迅猛,應(yīng)用非常廣泛,有豐富的擴(kuò)展包可以應(yīng)付你能想到的各種應(yīng)用場(chǎng)景,lara...

    shevy 評(píng)論0 收藏0
  • PHP / Laravel API 開發(fā)推薦閱讀清單

    showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區(qū)優(yōu)秀文章 Laravel 5.5+passport 放棄 dingo 開發(fā) API 實(shí)戰(zhàn),讓 API 開發(fā)更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項(xiàng)目中使用 - API 文檔撰寫方案 推薦 Laravel API 項(xiàng)目必須使用的 8 個(gè)...

    shmily 評(píng)論0 收藏0
  • [譯] 使用 PHPStorm 開發(fā) Laravel 應(yīng)用

    摘要:很多程序員使用創(chuàng)建他們的應(yīng)用程序。是一個(gè)免費(fèi)開源的應(yīng)用程序框架。是的模板語言,對(duì)藝術(shù)家友好,這個(gè)程序員的命令行工具可以在中工作使用插件和幫助器我們可以進(jìn)一步擴(kuò)展對(duì)應(yīng)用的支持。 很多PHP程序員使用 [laravel] 創(chuàng)建他們的應(yīng)用程序。[laravel] 是一個(gè)免費(fèi)開源的PHP web應(yīng)用程序框架。它基于多個(gè)Symfony 組件,提供了一個(gè)開發(fā)框架,包括authentication,...

    buildupchao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<