摘要:按照最初提出者的介紹,是銜接數據映射層和領域層之間的一個紐帶,作用相當于一個在內存中的域對象集合。客戶端對象把查詢的一些實體進行組合,并把它們提交給。同時支持登錄過期時間設置,登錄之前,登錄之后事件處理。
laravel 開發輔助工具 配置 添加服務提供商
將下面這行添加至 config/app.php 文件 providers 數組中:
"providers" => [ ... AppPluginsAuthProvidersLaravelServiceProvider::class ]插件及文檔
redisToken認證
Repository 模式
表單搜索輔助插件
Excels導出輔助插件
Sign 加簽
Sql 寫進日志-事件
Controller Traits
Repository 模式 插件介紹首先需要聲明的是設計模式和使用的框架以及語言是無關的,關鍵是要理解設計模式背后的原則,這樣才能不管你用的是什么技術,都能夠在實踐中實現相應的設計模式。
按照最初提出者的介紹,Repository 是銜接數據映射層和領域層之間的一個紐帶,作用相當于一個在內存中的域對象集合。客戶端對象把查詢的一些實體進行組合,并把它 們提交給 Repository。對象能夠從 Repository 中移除或者添加,就好比這些對象在一個 Collection 對象上進行數據操作,同時映射層的代碼會對應的從數據庫中取出相應的數據。
從概念上講,Repository 是把一個數據存儲區的數據給封裝成對象的集合并提供了對這些集合的操作。
Repository 模式將業務邏輯和數據訪問分離開,兩者之間通過 Repository 接口進行通信,通俗點說,可以把 Repository 看做倉庫管理員,我們要從倉庫取東西(業務邏輯),只需要找管理員要就是了(Repository),不需要自己去找(數據訪問),具體流程如下圖所示:
創建 Repository 不使用緩存php artisan make:repo User使用緩存
php artisan make:repo User --cache
創建 UserRepository 時會詢問是否創建Model ,如果Model以存在,需要把 AppRepositoriesModulesUserProvider::class 的Model替換成當前使用的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 方法表單搜索輔助插件 插件介紹
把表單提交的一些參數傳換成 where 語句.
創建 Search生成一個UserController::index控制器使用的搜索輔助類
php artisan make:search UserIndexSearch
上面命令會創建一個 AppSearchsModulesUserIndexSearch::class 的類
創建Search時,建議根據 ControllerActionSearch 的格式創建。編寫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
請求參數:
phone=18565215214&name=成龍&date=2018-08-21
生成的sql
WHERE (phone = 18565215214) AND (name like "成龍%") AND (date > "2018-05-05" AND status = 1)Excels導出輔助插件 插件介紹
Excels導出輔助插件
創建 Excelsphp artisan make:excel User
上面命令會創建一個 AppExcelsModulesUserExcel::class 的類
編寫Searchid, $this->phone, $this->name ]; } /** * 搜索參數 * @return {[type]} [description] */ protected function getAttributes() { return new ExcelSearch(request()->only([ "phone", "name", ])); } }
更多用法 請參考 maatwebsite/excelSql 寫進日志-事件 介紹
把sql語句記錄到日志里
使用在 laravel 自帶的 EventServiceProvider 類里 listen 添加
"IlluminateDatabaseEvents" => [ "luffyzhaolaravelToolsListenersQueryListeners" ]生成事件
php artisan event:generateController Traits 介紹
controller公用方法
使用方法在 AppHttpControllersController 類中 use luffyzhaolaravelToolsTraitsResponseTrait
Sign 加簽 插件介紹請求參數加簽驗證
配置 Sign如果你使用的是md5加簽方式請在config/app.php文件中,添加 sign_key 配置。如果你使用的是Rsa加簽方式請在config/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"); } );
rsa 和 md5
準備參數
添加 timestamp 字段
然后按照字段名的 ASCII 碼從小到大排序(字典序)
生成 url 參數串
拼接 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參數串:
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加密
ddab78e7edfe56594e2776d892589a9credis-token 認證 插件介紹
把token保存在redis。同時支持登錄過期時間設置,登錄之前,登錄之后事件處理。
配置 Auth guard在 config/auth.php 文件中,你需要將 guards/driver 更新為 redis-token:
"defaults" => [ "guard" => "api", "passwords" => "users", ], ... "guards" => [ "api" => [ "driver" => "redis-token", "provider" => "users", ], ],更改 Model
如果需要使用 redis-token 作為用戶認證,我們需要對我們的 User 模型進行一點小小的改變,實現一個接口,變更后的 User 模型如下:
getKey(); } }登錄
/** * 登錄 * @method store * @param StoreRequest $request * * @return IlluminateHttpJsonResponse * * @author luffyzhao@vip.126.com */ 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 luffyzhao@vip.126.com */ public function logout() { auth("api")->logout(); return $this->respondWithSuccess([], "退出成功"); }事件
方法
方法方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29168.html
摘要:本文經授權轉自社區,后續更新將以帖子內容和內容為準。說明另一個令人喜歡的地方,是擁有活躍的開發者社區,而活躍的開發者社區帶來的,是繁華的擴展包生態。本文對上打了標簽的擴展包進行整理,截止到現在年月號,有超過個擴展包,以下是下載量最大的個。 本文經授權轉自 PHPHub 社區,后續更新將以 PHPHub 帖子內容 和 GitHub 內容 為準。 說明 Laravel 另一個令人喜歡的地方...
摘要:開發人員可以通過命令行工具生成和管理項目環境。附帶了一個名為的優秀的命令行工具它提供了一些開發過程中有用的命令用,可以用來生成框架代碼和數據庫管理。這就是的目錄結構發揮作用的地方。 Laravel被稱為全棧式框架,因為它能夠處理從網絡服務到數據庫管理、HTML生成的一切事情,垂直集成的web開發環境給開發者提供了更好的體驗。 開發人員可以通過命令行工具,生成和管理Laravel項目環...
摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:官方地址是目前最流行的框架,發展勢頭迅猛,應用非常廣泛,有豐富的擴展包可以應付你能想到的各種應用場景,框架思想前衛,跟隨時代潮流,提倡優雅代碼,自稱為工匠,其中的模板引擎容器以及擴展包為業務的開發提供了極大的便利。 laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,發展勢頭迅猛,應用非常廣泛,有豐富的擴展包可以應付你能想到的各種應用場景,lara...
showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區優秀文章 Laravel 5.5+passport 放棄 dingo 開發 API 實戰,讓 API 開發更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項目中使用 - API 文檔撰寫方案 推薦 Laravel API 項目必須使用的 8 個...
摘要:很多程序員使用創建他們的應用程序。是一個免費開源的應用程序框架。是的模板語言,對藝術家友好,這個程序員的命令行工具可以在中工作使用插件和幫助器我們可以進一步擴展對應用的支持。 很多PHP程序員使用 [laravel] 創建他們的應用程序。[laravel] 是一個免費開源的PHP web應用程序框架。它基于多個Symfony 組件,提供了一個開發框架,包括authentication,...
閱讀 1107·2021-11-23 10:05
閱讀 1785·2021-11-12 10:36
閱讀 1853·2019-08-30 15:56
閱讀 1684·2019-08-29 12:32
閱讀 3043·2019-08-28 18:04
閱讀 3428·2019-08-26 12:17
閱讀 2502·2019-08-26 11:35
閱讀 1240·2019-08-23 15:11