PHPackages                             kode/aop - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. kode/aop

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

kode/aop
========

基于 PHP 8.3+ 原生属性（Attribute）实现的轻量级、高性能、高扩展性 AOP（面向切面编程）组件

3.1.0(1w ago)1721Apache-2.0PHPPHP ^8.3

Since Mar 13Pushed 1w agoCompare

[ Source](https://github.com/kodephp/aop)[ Packagist](https://packagist.org/packages/kode/aop)[ Docs](https://github.com/kodephp/aop)[ RSS](/packages/kode-aop/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (11)Versions (9)Used By (1)

Kode/AOP - PHP 8.3+ 轻量级 AOP 框架
==============================

[](#kodeaop---php-83-轻量级-aop-框架)

[![PHP Version](https://camo.githubusercontent.com/16ca2eb401c82d9c0bfb385ffd6cbcb3c96bf0fc8da72473bf0c540631c35310/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344382e332d383839324246)](https://php.net/)[![License](https://camo.githubusercontent.com/54a591a708d9e41adc220d00e0caa979b5a5c035327d4eebaab67748cc889e4a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368652d2d322e302d677265656e)](LICENSE)

基于 PHP 8.3+ 原生属性（Attribute）实现的轻量级、高性能、高扩展性 AOP（面向切面编程）组件。

✨ 特性
----

[](#-特性)

- **原生支持**：基于 PHP 8.3+ 原生属性（Attribute）实现，IDE 友好
- **轻量级**：仅依赖 `kode/attributes` 包，无其他框架依赖
- **门面 API**：一行代码完成「注册切面 + 初始化 + 取代理」（`Aop::boot()` / `Aop::proxy()` / `Aop::wrap()`）
- **共享属性缓存**：基于 `kode/attributes` 2.x，可注入共享缓存（如 `RedisCache` / APCu）让多进程复用反射元数据，`Aop::setCache()` 一行接入
- **严格模式**：通知属性实例化失败立即抛错（不再静默跳过），`Aop::strict()` 可切换
- **五种通知**：前置（Before）、后置（After）、环绕（Around）、返回后（AfterReturning）、异常（AfterThrowing）
- **洋葱式 Around 链**：支持同一方法上多个 Around 通知正确嵌套（修复 v2 仅优先级最高者生效的问题）
- **丰富切入点**：`execution` / `within` / `@annotation` / `@within` / `@target` / `method`，支持 `&&` `||` `!` 逻辑运算、`类名+` 子类型、参数类型签名
- **命名空间代理**：生成的代理类与目标类处于同一命名空间，彻底修复 v2 的 `ParseError`
- **构造函数保留**：代理类完全继承目标类构造函数，不会吞掉构造逻辑
- **文件缓存**：代理类可落盘为真实 PHP 文件并被 OPcache 缓存，且按切面集合指纹隔离，避免脏缓存
- **类型安全**：充分利用 PHP 8.3 的类型系统与 `#[\Override]` 属性
- **优先级控制**：通过 `#[Priority]` 注解控制通知执行顺序（After 系列遵循「先进后出」栈语义）

📦 安装
----

[](#-安装)

```
composer require kode/aop
```

🚀 快速开始
------

[](#-快速开始)

### 1. 创建切面类

[](#1-创建切面类)

```
