日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel-Action 对代码的改造

發布時間:2024/9/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Laravel-Action 对代码的改造 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

以往寫過倆篇文章
[積德篇] 如何少寫PHP "爛"代碼 https://segmentfault.com/a/11...
舉槍消滅"爛代碼"的實戰案例 https://segmentfault.com/a/11...

感覺文章中對Action的操作沒有一個規范性的調用及編寫。特此寫了一個laravel-action包
https://github.com/CrazyCodes...
希望可以幫到你。

安裝

下載composer包: composer require crazycodes/laravel-action

注入提供者到 config/app.php

'providers' => [// [...]CrazyCodes\ActionServiceProvider::class, ],

注冊 Action facade:

'aliases' => [// [...]'Action' => CrazyCodes\Facades\Action::class, ],

發布配置文件

php artisan vendor:publish --provider=CrazyCodes\ActionServiceProvider

配置項就一個

actionNamespace //設置你的action所在的命名空間

使用

繼承Action方法獲取規范的命名

namespace CrazyCodes\Action;class CreateUser extends Action {}

繼承的Action準備了兩個方法

before

public function before($request) {return $request; }

Action被調用的同時會直接調用before方法執行。

after

public function after($request) {return []; }

可以選擇不聲明after方法。after主要用于調用其他Action

成員變量

public $beforeResultName = 'beforeResult'; public $afterResultName = 'afterResult';

用于獲取返回的結果

調用

可以通過Facade調用

Action::use('YourAction',發送的參數);

或者使用全局函數

laravel_action('YourAction',發送的參數);

獲取結果

得到的結果默認是對象。可以轉換格式

function toJson(); function toArray();

結果展示

Array

array:2 ["beforeResult" => array:1 [0 => "aaa"]"afterResult" => [] ]

JSON

{"beforeResult":["aaa"],"afterResult":[]}

Demo

依舊以創建用戶為例

UserController

<?phpnamespace Examples;use CrazyCodes\Facades\Action;/*** Class UserController* @package Examples*/class UserController{public function create(){$request = ['username' => 'test','password' => 'test',];$result = Action::use ('CreateUser', $request);//全局方法//laravel_action ('CreateUser', $request);// return $result->toArray();return $result->toJson ();}}

CreateUser

<?phpnamespace Examples;use CrazyCodes\Action;/*** Class CreateUser* 創建用戶* @package Examples*/class CreateUser extends Action{public function before($request){var_dump ($request);return ['status' => 'success'];}public function after($request){var_dump ($request);return Action::use ('CreateWallet', $request);}}

CreateWallet

<?phpnamespace Examples;use CrazyCodes\Action;/*** 創建用戶錢包* Class CreateWallet* @package Examples*/class CreateWallet extends Action{public function before($request){var_dump ($request);return ['status' => 'success'];}}

致謝

感謝你看到這里,希望這篇文章讓你的代碼更優雅。謝謝

原文地址:https://segmentfault.com/a/1190000016052574

轉載于:https://www.cnblogs.com/lalalagq/p/9974969.html

總結

以上是生活随笔為你收集整理的Laravel-Action 对代码的改造的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。