第二部分 是思考时间 主要考虑 1中的思想的代码架构
我这个模式和Repository模式 有点像 都是把业务的方法分层
甚至可以说是对Repository模式的优化 或者说更彻底的运用仓库模式
把仓库的功能提升,仓库不在是仓库 是一个控制流程
我的模式目的是两个 代码优雅 代码量减少(单个方法是增多 但是总的来看应该是减少的)
以下是把Repository模式融入进我的模式的特点
方法容器中有仓库类
仓库类中有各自的方法
方法容器中调用的是仓库类的方法
把方法内聚 同种方法写在同一个仓库类中
可以直接使用别人的repository的包为基类的类 作为我的仓库类
……
包已经写完
laravel-function-flow
使用代码为
首先用composer加载包
composer require anyuzhe/laravel-function-flow dev-master
在配置文件config/app.php的服务容器数组中加入
\Anyuzhe\LaravelFunctionFlow\FunctionFlowServiceProvider::class,
在门面数组中加入
‘Flow’ => \Anyuzhe\LaravelFunctionFlow\FlowFacade::class,
执行命令 生成配置文件
php artisan funcFlow:publish
会在config文件夹中生成function-flow.php文件
可在里面配置仓库类 类似如下
1 | return array( |
以下是控制器中的使用示例
1 | public function bindRecord(Request $request) |
首先除了flow方法。别的方法调用都是返回对象本身 所以可以链式调用 以上是facade方式的调用
再看一下这个详细的例子
1 | public function beforeStore($id, $data) |
此例子中并没有使用setLastFunc方法(用来设置最后运行方法的)
需要注意的是缓存是用了类名+方法名+参数转成字符串的值作为缓存的键名。
可以适用于一些场景 可以配合函数输出缓存的依据参数 配合使用应该还不错
最后看一下 几个方法的实例 了解下方法的编写
注意方法中的参数都是通过方法容器自动传入的 如果方法容器的参数数组中不存在并且没有默认值 会传入null
flow方法会把方法容器的parameters成员返回 也就是所有的参数
1 | 这一用来返回最后的reponse数组的方法。 判断在别的方法中是否输出了错误码和错误信息 |
1 | public function getOneId() |
1 | public function getIdByNo($store_no) |