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
<?php
namespace 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
<?php
namespace 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
<?php
namespace 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
Laravel-Action 对代码的改造的更多相关文章
- Windows Live Writer 代码插件改造
源码和插件都在后面,如果不想看我神神叨叨的可以直接到文章后面下载 一 .找插件 在使用Windows Live Writer 经常要用到插入代码的功能,根据博客园中教程,分别使用了: WindowsL ...
- 【转】Windows Live Writer 代码插件改造
源码和插件都在后面,如果不想看我神神叨叨的可以直接到文章后面下载 一 .找插件 在使用Windows Live Writer 经常要用到插入代码的功能,根据博客园中教程,分别使用了: WindowsL ...
- laravel前台html代码不显示
后天向前台传输变量,如果能取到变量数据,还有代码,但是不显示图片 可以把{{}}换成{!! !!}试试.
- laravel phpstorm IDE 代码提示
第一步:在项目的composer.json中添加如下一行 "require": { "laravel/framework": "5.0.*" ...
- 【laravel】同一代码段内,先更新数据,后查询修改的数据,查询结果错误的问题
如标题所言,是什么意思呢?举个栗子,需求如下: 你是一个电话销售人员,手头有一些待call电话单,每个电话单上有N个不同的电话号码,需要你每打一个电话就标记为”已打“.当一个电话单上的号码都标记为”已 ...
- 委托代码func和Action的基本用法
这是微软简化后的委托写法,其中,func适合带返回参数的方法调用,action适合没有返回参数的方法调用 FUNC方法代码: public string GetPeopleInfo(string na ...
- laravel代码规范强制检查
目录 介绍 代码规范检查与修复 在git commit时自动检查代码规范 后记 介绍 在团队协作开发中,代码规范是必要的.以前的规范都是自己定,然后手动检查,很难做到有效的约束. 现代的PHP,则有得 ...
- 使用dva改造旧项目的数据流方案
前言 最近在给自己的脚手架项目转到TypeScript时,遇到了一些麻烦. 项目之前采用的是react + react-redux + redux-thunk + redux-actions +re ...
- 第十四节:Asp.Net Core 中的跨域解决方案(Cors、jsonp改造、chrome配置)
一. 整体说明 1. 说在前面的话 早在前面的章节中,就详细介绍了.Net FrameWork版本下MVC和WebApi的跨域解决方案,详见:https://www.cnblogs.com/yaope ...
随机推荐
- Linux下查看history里的某种命令
Linux下,直接键入history命令,会将当前账户此前所有的命令都显示出来,未免太多了些.如果我只想查找某种命令,怎么办? 比如说,我只想查找我之前运行过的 "git" 命令 ...
- 利用【监听器】动态加载Log4j配置文件
转自:https://veromca273.iteye.com/blog/1889304 1 创建监听器: public class LogListener implements ServletCon ...
- Euclid(几何)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2831 题意:已知A,B,C,D,E,F的坐标, ...
- 02-vue过滤器和键盘修饰符
过滤器 概念:Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化.过滤器可以用在两个地方:mustache 插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的 ...
- mysql中类型转换
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值 CAST(xxx AS 类型), CONVERT(xxx,类型) 二进制,同带binary前缀的效果 : ...
- 51nod1565 FFT
思路: 显然拆位FFT 不解释 //By SiriusRen #include <bits/stdc++.h> using namespace std; ; ); ,L,S,T,k,sa[ ...
- BZOJ 2829 凸包
思路: 把信用卡周围去掉 只剩下中间的长方形 最后的答案加上一个圆 //By SiriusRen #include <bits/stdc++.h> using namespace std ...
- EF--DBFirst
EF框架有三种基本的方式:DB First,Model First,Code First.这里简单的说一下DB First,适合没有基础的同学照着做,学习基础的东西. DatabaseFirst就是围 ...
- [转]在 Linux 下使用 RAID
转自:http://www.linuxidc.com/Linux/2015-08/122191.htm RAID 的意思是廉价磁盘冗余阵列(Redundant Array of Inexpensive ...
- Flume 是什么?
Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. 收集.聚合事件 ...