larapackages / interceptor
该软件包最新版本(7.1.0)没有可用的许可证信息。
Laravel 拦截器模式
7.1.0
2020-05-03 13:05 UTC
Requires
- php: ^7.2.5
- illuminate/container: ^7.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.27
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^8.4|^9.0
README
为什么我需要它
拦截对类和逻辑抽象部分的调用,并将其分解为更小的类
安装
使用composer安装
composer require larapackages/interceptor
发布
php artisan vendor:publish --provider="Larapackages\Interceptor\Providers\InterceptorServiceProvider"
用法
在你的 SomeClass 中实现 Larapackages\Interceptor\InterceptorInterface。
class SomeClass implements \Larapackages\Interceptor\InterceptorInterface { public static function interceptors(): array { return [ // Classes namespaces that will intercept this class ]; } };
然后你必须使用Laravel容器使拦截器类工作。
$class = app()->make(SomeClass::class); $class = resolve(SomeClass::class);
修改参数
class ArgInterceptor { public function getName($name) { $name = mb_strtoupper($name); return compact('name'); } }; class ArgClass implements \Larapackages\Interceptor\InterceptorInterface { public function getName($name) { return $name; } public static function interceptors(): array { return [ ArgInterceptor::class ]; } }; $class = app()->make(ArgClass::class)->getName('fake'); //Will return Fake
验证数据
class ArgInterceptor { public function getValidData(array $data) { $validator = \Illuminate\Support\Facades\Validator::make($data, [ 'id' => 'required', ])->validate(); } }; class ArgClass implements \Larapackages\Interceptor\InterceptorInterface { public function getValidData(array $data) { return $data; } public static function interceptors(): array { return [ ArgInterceptor::class ]; } }; $class = app()->make(ArgClass::class)->getValidData(['name' => 'fake']); //Will throw a validation exception $class = app()->make(ArgClass::class)->getValidData(['id' => 1]); //Will return ['id' => 1]
返回响应
class ArgInterceptor { public function getName(string $name) { if ($name === 'test') { return 'Test Name'; } } }; class ArgClass implements \Larapackages\Interceptor\InterceptorInterface { public function getName(string $name) { return $name; } public static function interceptors(): array { return [ ArgInterceptor::class ]; } }; $class = app()->make(ArgClass::class)->getName('test'); //Will return Test Name $class = app()->make(ArgClass::class)->getName('second test'); //Will return second test
缓存
为了提高性能,该软件包有两个命令用于生成和清除缓存。如果存在缓存文件,软件包将自动使用它,否则它将扫描路径。
生成缓存
php artisan interceptor:cache
清除缓存
php artisan interceptor:clear
问题 & 贡献
如果你发现任何问题,请报告它或通过提交拉取请求进行贡献。