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 对代码的改造的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分析师分析业务维度,(个人制作分析思维导
- 下一篇: Hadoop的伪分布式安装