liyuze / laravel-method-chaining-macros
1.1.0
2022-05-09 02:48 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.0|^9.0
- liyuze/method-chaining-proxy: ^1.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
此扩展包是针对对 liyuze/method-chaining-proxy
在 laravel 框架补充,通过 marcoable 特性的类快速创建方法链式调用代理器。
安装
你可以通过 composer 进行安装:
composer require liyuze/laravel-method-chaining-macros
Macros
用例
chaining
代理器有三种工作模式:
tap
模式,任何调用都 不会 影响代理的代理值。pipe
模式,任何调用都 会 影响代理的代理值。mixed
模式,只有有返回值,且不null
时 才会 影响代理的代理值。
tapChaining
、 pipeChaining
、 mixedChaining
是快速创建这三种工作模式的代理器,chaining
是 mixedChaining
的别名。
collect([1,2,3])->chaining()->map(fn ($v) => $v * 2)->sum()->popValue(); //12 collect([1,2,3])->pipeChaining()->map(fn ($v) => $v * 2)->sum()->popValue(); //Collection([2,4,6])
更多功能查看 liyuze/method-chaining-proxy
文档
ifChaining
$list = collect([1,2,3]); $list->ifChaining(true)->map(fn ($v) => $v * 2)->sum() ->elseChaining()->map(fn ($v) => $v * 3)->avg() ->endIfChaining(); //12 $list->ifChaining(false)->map(fn ($v) => $v * 2)->sum() ->elseChaining()->map(fn ($v) => $v * 3)->avg() ->endIfChaining(); //6
unlessChaining
$list = collect([1,2,3]); $list->unlessChaining(true)->map(fn ($v) => $v * 2)->sum() ->elseChaining()->map(fn ($v) => $v * 3)->avg() ->endUnlessChaining(); //6
配置
发布配置文件
php artisan vendor:publish --provider="Liyuze\MethodChainingMacros\MethodChainingMacrosServiceProvider"
删除注释或添加类名来修改 macro 类列表。 通过 rename 项来指定
如果
测试
composer test
修改记录
点击 CHANGELOG 查看最近修改了哪些内容。
贡献
点击 CONTRIBUTING 查看详情
安全
如果您发现任何与安全相关的问题,请发送电子邮件290315384@qq.com而不是使用问题追踪器。
贡献值
开源协议
The MIT License (MIT)。点击 License File 查看更多信息。
Laravel 扩展包样板
本扩展包使用 Laravel Package Boilerplate 工具生成。