PHPackages                             sunsgne/annotations - 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. sunsgne/annotations

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

sunsgne/annotations
===================

Webman plugin sunsgne/annotations

2.0.2(2y ago)197771[1 issues](https://github.com/sunsgneayo/annotation/issues)MITPHPPHP &gt;=8.0

Since May 20Pushed 8mo ago2 watchersCompare

[ Source](https://github.com/sunsgneayo/annotation)[ Packagist](https://packagist.org/packages/sunsgne/annotations)[ RSS](/packages/sunsgne-annotations/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (2)Versions (16)Used By (0)

 [![sunsgne](https://camo.githubusercontent.com/6cb5b20ad6a40cc313589c6925f95af74ad12ce24089711713513e61930d3a2e/687474703a2f2f63646e2e71782e317a686968652e636e2f696d6167652f32303235303832392f62346433396535633539643834366436383566613761373739346538663432612e706e67)](https://camo.githubusercontent.com/6cb5b20ad6a40cc313589c6925f95af74ad12ce24089711713513e61930d3a2e/687474703a2f2f63646e2e71782e317a686968652e636e2f696d6167652f32303235303832392f62346433396535633539643834366436383566613761373739346538663432612e706e67)

**sunsgne/annotation**

**🐬 Webman's shortcut routing based on annotation scheme 🐬**

[![Latest Stable Version](https://camo.githubusercontent.com/18e7a69bd12b506069eb9c3d97ec6217555e82691b86711fde764820892042e2/687474703a2f2f706f7365722e707567782e6f72672f73756e73676e652f616e6e6f746174696f6e732f76)](https://packagist.org/packages/sunsgne/annotations)[![Total Downloads](https://camo.githubusercontent.com/cfceba57cb084988695ea6c4083d0cb997657726b64274022c7a5da823e253a8/687474703a2f2f706f7365722e707567782e6f72672f73756e73676e652f616e6e6f746174696f6e732f646f776e6c6f616473)](https://packagist.org/packages/sunsgne/annotations)[![Latest Unstable Version](https://camo.githubusercontent.com/8e7880db70fc0d451417a369d889a43f2c598732f47cfddb09c5936caad48830/687474703a2f2f706f7365722e707567782e6f72672f73756e73676e652f616e6e6f746174696f6e732f762f756e737461626c65)](https://packagist.org/packages/sunsgne/annotations)[![License](https://camo.githubusercontent.com/c07b56195918617add835a9d679523e56999d77e9265943bef4044a7ccfe82c3/687474703a2f2f706f7365722e707567782e6f72672f73756e73676e652f616e6e6f746174696f6e732f6c6963656e7365)](https://packagist.org/packages/sunsgne/annotations)[![PHP Version Require](https://camo.githubusercontent.com/d75f3d085f9e43516b023f1dfd27ed11eb95b1d2e2d792d82ee7956b7bdf45d1/687474703a2f2f706f7365722e707567782e6f72672f73756e73676e652f616e6e6f746174696f6e732f726571756972652f706870)](https://packagist.org/packages/sunsgne/annotations)

webman annotation 注解路由
======================

[](#webman--annotation-注解路由)

> 使用了 `doctrine/annotations` 包来对代码内的注解进行解析。支持`php8注解方式`
>
> 您可以直接在控制器类任意方法定义`@RequestMapping`注解来完成一个路由的定义，如需使用路由中间件请定义该路由的注解方法`@Middwares`或`@Middware`注解并引入中间件命名空间即可

更新日志
----

[](#更新日志)

### 2.0.0 - 2023-11-21

[](#200---2023-11-21)

- 2.0 版本仅支持`php >= 8`
- 增加`AutoController`，处理路由组等

```
#[AutoController(prefix: '/test')]
// 在此controller下定义的路由前缀都会为`prefix`参数
```

### 1.1.2 - 2022-07-04

[](#112---2022-07-04)

- 修复注解含有`混杂参数`，导致读取失败的问题
- 新增配置文件`ignored.php`，用于对注解中的其他参数做忽略读取操作：如`datetime`,`used`等。
- 对`php8`以上版本做`原生注解`的适配

安装
--

[](#安装)

```
composer require sunsgne/annotations
```

使用
--

[](#使用)

### 路由控制

[](#路由控制)

- GET
- POST
- PUT
- DELETE
- HEADER
- OPTIONS

```
use Sunsgne\Annotations\Mapping\RequestMapping;
/**
 * 允许通过 GET 或 POST 方式请求
 * @RequestMapping(methods="GET , POST" , path="/api/json")
 * @param Request $request
 * @return Response
 */
public function json(Request $request)
{
    return json(['code' => 0, 'msg' => 'ok']);
}
```

### 路由中间件

[](#路由中间件)

在通过注解定义路由时，您仅可通过注解的方式来定义中间件，对中间件的定义有两个注解，分别为：

> 使用 `@Middleware` 注解时需 `use  Sunsgne\Annotations\Mapping\Middleware;` 命名空间；

> 使用 `@Middlewares` 注解时需 `use  Sunsgne\Annotations\Mapping\Middlewares;` 命名空间；

- `@Middleware` 注解为定义单个中间件时使用，在一个地方仅可定义一个该注解，不可重复定义
- `@Middlewares` 注解为定义多个中间件时使用，在一个地方仅可定义一个该注解，然后通过在该注解内定义多个 `@Middleware` 注解实现多个中间件的定义 定义单个中间件：

```
use Sunsgne\Annotations\Mapping\RequestMapping;
use Sunsgne\Annotations\Mapping\Middleware;
use Sunsgne\Annotations\Mapping\Middlewares;
use app\middleware\App;
use app\middleware\Log;
/**
 * @RequestMapping(methods="GET" , path="/api/json")
 * @Middleware(App::class)
 * @param Request $request
 * @return Response
 */
public function json(Request $request)
{
    return json(['code' => 0, 'msg' => 'ok']);
}
```

定义多个中间件：

```
use Sunsgne\Annotations\Mapping\RequestMapping;
use Sunsgne\Annotations\Mapping\Middleware;
use Sunsgne\Annotations\Mapping\Middlewares;
use app\middleware\App;
use app\middleware\Log;
/**
 * @RequestMapping(methods="GET" , path="/api/json")
 * @Middlewares({
 *     @Middleware(App::class),
 *     @Middleware(Log::class)
 * })
 * @param Request $request
 * @return Response
 */
public function json(Request $request)
{
    return json(['code' => 0, 'msg' => 'ok']);
}
```

### 支持PHP8.0+版本

[](#支持php80版本)

---

\*注意请勿直接copy。示例中未创建中间件

1. 定义路由

```
use Sunsgne\Annotations\Mapping\RequestMapping;
use Sunsgne\Annotations\Mapping\Middleware;
use Sunsgne\Annotations\Mapping\Middlewares;
use app\middleware\App;
use app\middleware\Log;
#[RequestMapping(methods: "GET , POST" , path:"/api/json")]
public function json(Request $request)
{
    return json(['code' => 0, 'msg' => 'ok']);
}
```

2. 定义路由并配置中间件(多个)

```
use Sunsgne\Annotations\Mapping\RequestMapping;
use Sunsgne\Annotations\Mapping\Middleware;
use Sunsgne\Annotations\Mapping\Middlewares;
use app\middleware\App;
use app\middleware\Log;
#[RequestMapping(methods: "GET , POST" , path:"/api/json") , Middlewares(App::class , Log::class)]
public function json(Request $request)
{
    return json(['code' => 0, 'msg' => 'ok']);
}
```

### 忽略注解参数

[](#忽略注解参数)

请在`config/plugin/sunsgne/annotations/ignored`文件中添加需要忽略的参数

```
return [
    "after", "afterClass", "backupGlobals", "backupStaticAttributes", "before", "beforeClass", "codeCoverageIgnore*",
    "covers", "coversDefaultClass", "coversNothing", "dataProvider", "depends", "doesNotPerformAssertions",
    "expectedException", "expectedExceptionCode", "expectedExceptionMessage", "expectedExceptionMessageRegExp", "group",
    "large", "medium", "preserveGlobalState", "requires", "runTestsInSeparateProcesses", "runInSeparateProcess", "small",
    "test", "testdox", "testWith", "ticket", "uses" , "datetime"
    // ........
];
```

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance41

Moderate activity, may be stable

Popularity24

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~48 days

Recently: every ~157 days

Total

15

Last Release

789d ago

Major Versions

0.1.2 → 1.0.02022-05-23

1.1.2 → 2.0.02023-11-21

PHP version history (3 changes)0.0.2PHP ^7.4

1.0.1PHP &gt;=7.4

2.0.0PHP &gt;=8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/65843af70bae47cda80e0386c0640e2e17e1f8c8a12ea8fade3e1297237b26f3?d=identicon)[sunsgneayo](/maintainers/sunsgneayo)

---

Top Contributors

[![sunsgneayo](https://avatars.githubusercontent.com/u/51745500?v=4)](https://github.com/sunsgneayo "sunsgneayo (28 commits)")

---

Tags

middlewarephp8psr-15routerwebmanworkerman

### Embed Badge

![Health badge](/badges/sunsgne-annotations/health.svg)

```
[![Health](https://phpackages.com/badges/sunsgne-annotations/health.svg)](https://phpackages.com/packages/sunsgne-annotations)
```

###  Alternatives

[friendsofsymfony/comment-bundle

This Bundle provides threaded comment functionality for Symfony applications

460751.2k5](/packages/friendsofsymfony-comment-bundle)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

52664.9k12](/packages/solspace-craft-freeform)[koriym/attributes

An annotation/attribute reader

433.4M12](/packages/koriym-attributes)[hostnet/entity-tracker-component

Provides an event when a Tracked entity changes

16158.1k4](/packages/hostnet-entity-tracker-component)[gomachan46/state-machine

simple state machine with annotations for PHP, inspired by AASM known as a Ruby state machine.

1893.9k](/packages/gomachan46-state-machine)[hostnet/accessor-generator-plugin-lib

Generate get, set, add, remove methods on the fly.

10118.9k](/packages/hostnet-accessor-generator-plugin-lib)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
