54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Aspect\Test\Proxy;
|
|
|
|
use App\Interface\Test\Decorator\LoggerInterface;
|
|
use App\Service\Test\Proxy\Payment\PaymentService;
|
|
use Hyperf\Di\Annotation\Aspect;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Di\Aop\AbstractAspect;
|
|
use Hyperf\Di\Aop\ProceedingJoinPoint;
|
|
use Hyperf\Di\Exception\Exception;
|
|
use Throwable;
|
|
|
|
#[Aspect]
|
|
class LoggingAspect extends AbstractAspect
|
|
{
|
|
/**
|
|
* @var LoggerInterface
|
|
*/
|
|
#[Inject]
|
|
protected LoggerInterface $logger;
|
|
|
|
|
|
/**
|
|
* @var array|string[]
|
|
*/
|
|
public array $classes = [
|
|
PaymentService::class , '::pay',
|
|
];
|
|
|
|
|
|
/**
|
|
* @param ProceedingJoinPoint $proceedingJoinPoint
|
|
* @return mixed
|
|
* @throws Throwable
|
|
*/
|
|
public function process(ProceedingJoinPoint $proceedingJoinPoint): mixed
|
|
{
|
|
$amount = $proceedingJoinPoint->arguments['keys']['amount'];
|
|
|
|
$this->logger->log('Attempting payment of '.$amount.' for '.$proceedingJoinPoint->methodName);
|
|
|
|
try {
|
|
$result = $proceedingJoinPoint->process();
|
|
|
|
$this->logger->log('Payment of '.$amount.'succeeded');
|
|
|
|
return $result;
|
|
} catch (Throwable $e) {
|
|
$this->logger->error('Payment of '.$amount.' failed: '.$e->getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
} |