资讯专栏INFORMATION COLUMN

Laravel-Action 对代码的改造

mj / 2493人阅读

摘要:前言以往写过俩篇文章积德篇如何少写烂代码举枪消灭烂代码的实战案例感觉文章中对的操作没有一个规范性的调用及编写。可以选择不声明方法。

前言

以往写过俩篇文章
[积德篇] 如何少写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

</>复制代码

  1. "providers" => [
  2. // [...]
  3. CrazyCodesActionServiceProvider::class,
  4. ],

注册 Action facade:

</>复制代码

  1. "aliases" => [
  2. // [...]
  3. "Action" => CrazyCodesFacadesAction::class,
  4. ],

发布配置文件

</>复制代码

  1. php artisan vendor:publish --provider=CrazyCodesActionServiceProvider

配置项就一个

</>复制代码

  1. actionNamespace //设置你的action所在的命名空间
使用

继承Action方法获取规范的命名

</>复制代码

  1. namespace CrazyCodesAction;
  2. class CreateUser extends Action
  3. {
  4. }

继承的Action准备了两个方法

before

</>复制代码

  1. public function before($request)
  2. {
  3. return $request;
  4. }

Action被调用的同时会直接调用before方法执行。

after

</>复制代码

  1. public function after($request)
  2. {
  3. return [];
  4. }

可以选择不声明after方法。after主要用于调用其他Action

成员变量

</>复制代码

  1. public $beforeResultName = "beforeResult";
  2. public $afterResultName = "afterResult";

用于获取返回的结果

调用

可以通过Facade调用

</>复制代码

  1. Action::use("YourAction",发送的参数);

或者使用全局函数

</>复制代码

  1. laravel_action("YourAction",发送的参数);
获取结果

得到的结果默认是对象。可以转换格式

</>复制代码

  1. function toJson();
  2. function toArray();

结果展示

Array

</>复制代码

  1. array:2 [
  2. "beforeResult" => array:1 [
  3. 0 => "aaa"
  4. ]
  5. "afterResult" => []
  6. ]

JSON

</>复制代码

  1. {"beforeResult":["aaa"],"afterResult":[]}
Demo

依旧以创建用户为例

UserController

</>复制代码

  1. "test",
  2. "password" => "test",
  3. ];
  4. $result = Action::use ("CreateUser", $request);
  5. //全局方法
  6. //laravel_action ("CreateUser", $request);
  7. // return $result->toArray();
  8. return $result->toJson ();
  9. }
  10. }
CreateUser

</>复制代码

  1. "success"];
  2. }
  3. public function after($request)
  4. {
  5. var_dump ($request);
  6. return Action::use ("CreateWallet", $request);
  7. }
  8. }
CreateWallet

</>复制代码

  1. "success"];
  2. }
  3. }
致谢

感谢你看到这里,希望这篇文章让你的代码更优雅。谢谢

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29261.html

相关文章

  • 蚊子个人博客进行了彻底改造

    摘要:文章地址在网站开始对静态博客收费后,各个第三方的评论系统也相继无法使用的情况下,于是就产生了对博客进行改造的想法。于是在下班的休息时间之余,在基本不改变博客外观的情况下,对博客进行里改造。 文章地址: https://www.xiabingbao.com/blog/2017/08/22/new-blog.html 在coding网站开始对静态博客收费后,各个第三方的评论系统也相继无...

    silvertheo 评论0 收藏0
  • 蚊子个人博客进行了彻底改造

    摘要:文章地址在网站开始对静态博客收费后,各个第三方的评论系统也相继无法使用的情况下,于是就产生了对博客进行改造的想法。于是在下班的休息时间之余,在基本不改变博客外观的情况下,对博客进行里改造。 文章地址: https://www.xiabingbao.com/blog/2017/08/22/new-blog.html 在coding网站开始对静态博客收费后,各个第三方的评论系统也相继无...

    mingzhong 评论0 收藏0
  • seajs模块化改造实践

    摘要:为对象字符串时,表示模块的接口就是该对象字符串。我们来看一个实际的例子支付宝的登陆页面。在网页支付宝收银台中的运用很直观的就能看到插模块的合并,这个合并的工作就是构建工具的功劳了。 前言 一月份的时候,临近放假,拿到一个需求,新增一个产品,我一个前端对一个java后端,两个星期的开发时间。 因为大部分功能在别的产品都已经有了,基本都是简单处理一下拿过来,再添加一下额外需要的功能,比如选...

    justjavac 评论0 收藏0
  • Vue现有项目改造为Nuxt项目

    摘要:好了,项目启动了,目录结构也清楚了,接下来就是整个现有项目的迁移了目前正在改造项目,文章尚未写完,会抽时间不定期的继续更新项目的改造过程及分享改造过程中遇到的问题 公司项目,最初只为了实现前后端分离式开发,直接选择了vue框架进行开发,然而现在项目基本完成了,发现蜘蛛根本就抓取不到网站数据,搜索引擎搜出来,都是一片空白没有数据,需要对项目做SEO优化。 本人第一次接触SEO的优化,完全...

    Invoker 评论0 收藏0

发表评论

0条评论

mj

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<