定制 larapackages/interceptor 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

larapackages/interceptor

Composer 安装命令:

composer require larapackages/interceptor

包简介

Laravel Interceptor Pattern

README 文档

README

Build Status StyleCI Status Codacy Badge StyleCI Status

Why do I need it

For intercept calls to classes and abstract part of the logic to smaller classes

Installation

Install with composer

composer require larapackages/interceptor

Publish

php artisan vendor:publish --provider="Larapackages\Interceptor\Providers\InterceptorServiceProvider"

Usages

In your SomeClass implements Larapackages\Interceptor\InterceptorInterface.

class SomeClass implements \Larapackages\Interceptor\InterceptorInterface {
    public static function interceptors(): array
    {
        return [
            // Classes namespaces that will intercept this class
        ];
    }
};

The you must use Laravel container to make the class for interceptor works.

Laravel container resolving documentation

$class = app()->make(SomeClass::class);
$class = resolve(SomeClass::class);

Modifying arguments

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

Validate data

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]

Return responses

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

Cache

In order to improve performance, this package have two commands to generate and clear cache. Package will automatically use the cache file if exists, otherwise it scans the paths.

Generate cache:

php artisan interceptor:cache

Clear cache:

php artisan interceptor:clear

Issues & Contributing

If you find an issue please report it or contribute by submitting a pull request.

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2020-05-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固