前言之前写过两篇【集德篇】如何少写PHP“烂”代码https://segmentfault.com/a/11...举枪消灭》badcode》实战案例https://segmentfault.com/a/11...感觉文中对Action的操作没有标准的调用和写法。特此写了一个laravel-action包https://github.com/CrazyCodes...希望能帮到你。安装并下载composer包:composerrequirecrazycodes/laravel-actioninjectionprovidertoconfig/app.php'providers'=>[//[...]]CrazyCodes\ActionServiceProvider::class,],registerActionfacade:'aliases'=>[//[...]'Action'=>CrazyCodes\Facades\Action::class,],发布配置文件phpartisanvendor:publish--provider=CrazyCodes\ActionServiceProvider配置项是一个actionNamespace//设置你的动作所在的命名空间,使用继承的Action方法获取标准化的命名空间CrazyCodes\Action;classCreateUserextendsAction{}继承的Action在调用publicfunctionbefore($request){return$request;}Action之前准备了两个方法,同时会直接调用before方法执行。afterpublicfunctionafter($request){return[];}你可以选择不声明after方法。after主要用于调用其他Action成员变量public$beforeResultName='beforeResult';公共$afterResultName='afterResult';用于获取返回结果的调用可以通过Facade调用Action::use('YourAction',sentparameters);或者使用全局函数laravel_action('YourAction',发送的参数);获取结果得到的结果默认是一个对象。可以转换格式functiontoJson();functiontoArray();结果显示Arrayarray:2["beforeResult"=>array:1[0=>"aaa"]"afterResult"=>[]]JSON{"beforeResult":["aaa"],"afterResult":[]}Demo仍然以创建用户为例UserController'test','password'=>'test',];$result=Action::use('CreateUser',$request);//全局方法//laravel_action('CreateUser',$request);//return$result->toArray();返回$result->toJson();}}CreateUser'成功'];}publicfunctionafter($request){var_dump($request);返回动作::使用('CreateWallet',$request);}}CreateWallet'成功'];致谢感谢您阅读这里,希望本文能让您的代码更加优雅谢谢
