定制 formal-bears/aop 二次开发

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

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

formal-bears/aop

Composer 安装命令:

composer require formal-bears/aop

包简介

AOP utility for BEAR.Sunday

README 文档

README

Build Status

formal-bears/aop

AOP utility for BEAR.Sunday

Installation

composer require formal-bears/aop:^0.1

Feature

  • Equals-to matcher
  • HTTP Method matcher

Usage

リソースのHTTPメソッドをインターセプトしたい場合の実装例

// モジュールでの束縛
$this->bindInterceptor(
    $this->matcher->subclassesOf(ResourceObject::class),
    new IsHttpMethodMatcher(),  // HTTPメソッドマッチャー
    [FooInterceptor::class] // 束縛したいインターセプター
);

リソースインターセプターの用途としては、自分のドメインに合ったフレームワーク(開発基盤)を作りたいときを想定しています。 BEARは標準セットで使うこともできますが、拡張に対して開かれているので、フレームワークを作ることもできます。

Requires

>= PHP 7.2

実装の紹介(スニペット)

// リソースのメソッドのためのカスタムマッチャー
class IsHttpMethodMatcher extends EqualsToMatcher
{
    public function __construct()
    {
        parent::__construct([
            'onGet',
            'onPost',
            'onPut',
            // ... (省略)
        ]);
    }
}
// 上記 `IsHttpMethodMatcher` のスーパークラス。
// 同一かどうかのカスタムマッチャー。
use Ray\Aop\AbstractMatcher;

class EqualsToMatcher extends AbstractMatcher
{
    /**
     * @var array
     */
    private $values;

    /**
     * @param string|array $values
     */
    public function __construct($values)
    {
        parent::__construct();

        $this->values = (array) $values;
    }

    /**
     * {@inheritdoc}
     */
    public function matchesClass(\ReflectionClass $class, array $arguments)
    {
        return in_array(strtolower($class->getName()), array_map('strtolower', $this->values));
    }

    /**
     * {@inheritdoc}
     */
    public function matchesMethod(\ReflectionMethod $method, array $arguments)
    {
        return in_array(strtolower($method->getShortName()), array_map('strtolower', $this->values));
    }
}

Copyright

Copyright (c) 2019 Atsuhiro Kubo, Nana Yamane, All rights reserved.

License

The BSD 2-Clause License

统计信息

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

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-2-Clause
  • 更新时间: 2019-12-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固