hyperf/aop-integration

AopIntegration

Maintainers

👁 hyperf

Package info

github.com/hyperf/aop-integration

pkg:composer/hyperf/aop-integration

Statistics

Installs: 6 027

Dependents: 2

Suggesters: 0

Stars: 8

Open Issues: 1

v1.2.0 2023-02-09 14:46 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 41885e7c46f3afe591d4d26eb73148db287796c2

phpaophyperf

This package is auto-updated.

Last update: 2026-06-09 22:09:26 UTC


README

👁 PHPUnit

安装

composer require hyperf/aop-integration

配置 AOP 到 ThinkPHP 框架

  1. 添加配置到 config/config.php
<?php

declare(strict_types=1);

! defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));

return [
 'annotations' => [
 'scan' => [
 'paths' => [
 BASE_PATH . '/app',
 ],
 'ignore_annotations' => [
 'mixin',
 ],
 'class_map' => [
 ],
 ],
 ],
 'aspects' => [
 // 在此配置可用的 Aspect
 ],
];
  1. 修改入口文件
<?php

declare(strict_types=1);

namespace think;

use Hyperf\AopIntegration\ClassLoader;

require __DIR__ . '/../vendor/autoload.php';

// 初始化 AOP
! defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));

ClassLoader::init();

// 省略其他代码

配置 AOP 到 Webman 框架

增加 AOP 相关配置

我们需要在 config 目录下,增加 config.php 配置

<?php

use Hyperf\Di\Annotation\AspectCollector;

return [
 'annotations' => [
 'scan' => [
 'paths' => [
 BASE_PATH . '/app',
 ],
 'ignore_annotations' => [
 'mixin',
 ],
 'class_map' => [
 ],
 'collectors' => [
 AspectCollector::class
 ],
 ],
 ],
 'aspects' => [
 // 这里写入对应的 Aspect
 app\aspect\DebugAspect::class,
 ]
];

配置入口文件 start.php

我们将初始化方法,放到 timezone 下方,以下省略其他代码

use Hyperf\AopIntegration\ClassLoader;

if ($timezone = config('app.default_timezone')) {
 date_default_timezone_set($timezone);
}

// 初始化
ClassLoader::init();

测试

首先让我们编写待切入类

<?php
namespace app\service;

class UserService
{
 public function first(): array
 {
 return ['id' => 1];
 }
}

其次新增对应的 DebugAspect

<?php
namespace app\aspect;

use app\service\UserService;
use Hyperf\Di\Aop\AbstractAspect;
use Hyperf\Di\Aop\ProceedingJoinPoint;

class DebugAspect extends AbstractAspect
{
 public $classes = [
 UserService::class . '::first',
 ];

 public function process(ProceedingJoinPoint $proceedingJoinPoint)
 {
 var_dump(11);
 return $proceedingJoinPoint->process();
 }
}

接下来编辑控制器 app\controller\Index

<?php
namespace app\controller;

use app\service\UserService;
use support\Request;

class Index
{
 public function json(Request $request)
 {
 return json(['code' => 0, 'msg' => 'ok', 'data' => (new UserService())->first()]);
 }
}

最后启动服务,并测试。

php start.php start
curl http://127.0.0.1:8787/index/json