Hyperf路由与控制器编写规范_Kimi AI辅助高性能路由设计全流程

星萱小哥_9467

星萱小哥_9467

2026-05-26

668人浏览

原创

hyperf控制器需继承abstractcontroller并置于app\controller命名空间,路由支持config/routes.php配置和@autocontroller/@controller注解两种方式,且二者不可混用;带参数路由必须加正则约束如{id:\d+},变量名须与方法参数名严格一致。

hyperf路由与控制器编写规范_kimi ai辅助高性能路由设计全流程 - php中文网

要让Hyperf项目具备清晰可维护的请求入口和业务分层能力,必须严格遵循路由与控制器的编写规范,避免将验证、数据处理、数据库操作等逻辑混入控制器中。

创建标准控制器类

app/Controller目录下新建PHP文件,例如UserController.php,文件名必须以Controller结尾。

类必须继承AbstractController,且命名空间为App\Controller;不继承或命名空间错误会导致依赖注入失效。

所有处理方法必须声明为public,protected/private方法不会被路由识别,也不会被框架自动注入请求对象。

方法签名中可直接类型提示RequestInterface,框架会自动注入当前请求实例,无需手动获取。

配置路由的两种核心方式

Hyperf支持配置文件集中式和注解驱动式两种路由定义路径,二者不可混用在同一控制器上。

方法一:通过config/routes.php统一管理

打开config/routes.php,引入Router类:use Hyperf\HttpServer\Router\Router;

使用静态方法绑定URL与控制器动作,例如:Router::get('/users', 'App\Controller\UserController@index');

支持多方法共用一个动作:Router::addRoute(['GET', 'POST'], '/login', 'App\Controller\AuthController::handle');

带正则约束的动态参数必须显式写出,如/users/{id:\d+}——【不加\d+会导致非法字符串ID进入控制器,引发类型转换异常】;若仅写{id},框架将接受任意字符,失去前置校验能力。

路由分组可复用前缀与中间件:Router::group(['prefix' => '/api/v1', 'middleware' => [AuthMiddleware::class]], function () { ... });

在SEO发布前,从路由清单生成XML网站地图和robots.txt
在SEO发布前,从路由清单生成XML网站地图和robots.txt

当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。

下载

方法二:使用#[AutoController]快速生成

在控制器类顶部添加#[AutoController]注解,无需修改routes.php。

框架自动将类名转为蛇形小写作为基础路径,如UserDetailController/user_detail,每个public方法生成同名子路径。

可通过prefix参数强制覆盖默认路径:#[AutoController(prefix: '/v2/users')],此时index()对应/v2/users/index

该模式默认允许GET和POST,若只希望开放GET,需在方法内用$this->request->getMethod() === 'GET'判断并提前返回。

精细控制路由行为:#[Controller] + #[*Mapping]

当需要为同一路径支持不同HTTP方法、或对参数做强约束时,必须使用此组合。

第一步:在类上声明#[Controller],类本身不产生任何路由。

第二步:为每个方法单独添加动词注解,如#[GetMapping(path: 'profile/{uid:\d+}')]

第三步:路径中变量名必须与方法参数名一致,且类型声明需匹配,例如public function profile(int $uid)——【变量名$uid与{uid:\d+}不一致将导致参数绑定失败,$uid值为null】

第四步:支持联合多个注解,如同时标注#[GetMapping]#[Middleware(AuthMiddleware::class)],实现权限拦截。

第五步:可为整个控制器统一添加中间件,只需在#[Controller]中传入middleware选项,避免每个方法重复写。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

路由 hyperf

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

8964

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5461

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

1995

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3388

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4054

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3171

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4497

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3502

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11562

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程