formal-bears / aop
AOP utility for BEAR.Sunday
0.1.0
2019-12-15 13:03 UTC
Requires
- php: >=7.2.0
- bear/resource: ~1.0
- ray/aop: ~2.0
Requires (Dev)
- phpunit/phpunit: ~8.5
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-12-23 16:03:06 UTC
README
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.