PHPackages                             guanhui07/webman-annotation - 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. guanhui07/webman-annotation

ActiveLibrary

guanhui07/webman-annotation
===========================

Webman plugin sunsgne/annotations

0121PHP

Since Sep 19Pushed 1y agoCompare

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

READMEChangelogDependenciesVersions (1)Used By (1)

 [![sunsgne](https://camo.githubusercontent.com/e366b0a276ef18e50c689cb143c8f78eadfa2e14e8af4a8e9e1628362ad93f1e/68747470733a2f2f63646e2e6e696e65313132302e636e2f6c6f676f2d692e706e67)](https://camo.githubusercontent.com/e366b0a276ef18e50c689cb143c8f78eadfa2e14e8af4a8e9e1628362ad93f1e/68747470733a2f2f63646e2e6e696e65313132302e636e2f6c6f676f2d692e706e67)

**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`注解并引入中间件命名空间即可

安装
--

[](#安装)

```
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"
    // ........
];
```

### 更新日志

[](#更新日志)

#### 1.1.2 - 2022-07-04

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

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

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity16

Early-stage or recently created project

 Bus Factor1

Top contributor holds 80% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/3abde3fccf025ce86670101d7cfa0641d2415c9daad93e5f0c9573a2b23ddbda?d=identicon)[guanhui07](/maintainers/guanhui07)

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/guanhui07-webman-annotation/health.svg)

```
[![Health](https://phpackages.com/badges/guanhui07-webman-annotation/health.svg)](https://phpackages.com/packages/guanhui07-webman-annotation)
```

PHPackages © 2026

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