讲师中心 微信公众号
AI工具推荐 视频效率加速

TP5自定义函数如何写注释

浅枫吖_4081

浅枫吖_4081

发布时间:2026-10-07 14:22:06

|

953人浏览过

|

来源于php中文网

原创

TP5自定义函数注释须写在common.php中并严格使用PHPDoc格式:顶格/**开头、紧贴函数、完整@param/@return/@throws,返回类型必须为\think\Response等实际对象类型,不可写array或遗漏。

tp5自定义函数如何写注释

TP5自定义函数注释要加在 common.php 里,且必须用 PHPDoc 格式

TP5 的 common.php 是全局函数文件,但框架本身不解析或校验其中的注释——注释只对 IDE、静态分析工具(如 PHPStan)、以及后续可能接入的文档生成器(如 apidoc)起作用。所以你写不写、怎么写,不影响运行,但影响协作和可维护性。

关键点是:必须用标准 PHPDoc 块注释(/** */),不能用单行 // 或多行 /* */,否则 PHPStorm、VS Code 的参数提示、跳转、类型推导基本失效。

  • /** 必须顶格,紧贴函数声明上方,中间不能空行
  • 每个 @param 要写清类型和变量名,比如 @param string $name,别写 @param $name(类型丢失)
  • @return 后必须跟类型,void / array / int / \think\Response 等,不能留空
  • 如果函数可能抛出异常,加上 @throws \Exception(尤其封装了数据库操作或 HTTP 请求时)

示例(放在 application/common.php 中):

/**
 * 统一 API 响应输出函数
 * @param int $status 业务状态码,1 表示成功
 * @param string $message 提示信息
 * @param array $data 返回的数据体,可为空数组
 * @param int $httpCode HTTP 状态码,默认 200
 * @return \think\Response
 * @throws \think\Exception
 */
function show($status, $message, $data = [], $httpCode = 200)
{
    $data = ['status' => $status, 'message' => $message, 'data' => $data];
    return json($data, $httpCode);
}

show() 这类函数的注释里,@return 类型必须写 \think\Response

很多人写成 @return array 或漏掉,结果在控制器里调用 return show(...) 时,IDE 会误判返回值类型,导致后续链式调用(比如想加 header)没提示,甚至类型检查报错。

原因很直接:json() 是 TP5 的助手函数,它内部返回的是 \think\Response 实例,不是原始数组。框架靠这个对象完成 Content-Type 设置、状态码发送、异常拦截等动作。

  • 写 @return array → IDE 认为你返回的是数组,->header() 这类方法就没了提示
  • 不写 @return → PHPStan 直接报 “Missing return type” 错误
  • 写 @return \think\Response → 所有响应链路方法(header()、withCookie()、contentType())都能被识别

顺带提醒:\think\Response 在 TP5.1+ 中路径没变,但如果你项目是 TP5.0,类名是 \think\response\Json,注释里就得对应写清楚。

注释里别硬编码路径或版本号,用相对命名空间

你在 common.php 里写的函数,很可能被模型、事件、命令行脚本等多处调用。如果注释里出现类似 @see application/api/controller/Test.php 这种绝对路径,一旦目录结构调整(比如从 api 拆成 v1、v2),所有注释都得手动改,且 IDE 不会帮你定位。

更稳妥的做法是用逻辑引用:

  • 用 @see show() 指向同文件内其他函数
  • 用 @see \app\common\lib\exception\ApiHandleException 指向具体类(注意反斜杠开头)
  • 需要说明使用场景时,写“常用于 API 控制器的统一输出”,而不是“见 Test.php 第 12 行”

另外,@deprecated 标记比删函数更实用。比如旧版 apiReturn() 已被 show() 替代,就在原函数注释头加一行:@deprecated use show() instead,调用时 IDE 会划删除线并提示替代方案。

别依赖 DocBlockr 自动补全来写函数注释

Sublime 的 DocBlockr 插件对类方法、控制器 action 注释支持较好,但它识别不了 common.php 里的自由函数——因为没上下文(没 class、没 namespace、没 visibility)。你敲 /** 回车,它大概率生成空模板或错误参数占位符(比如把 $data = [] 解析成 @param [type] $data = [])。

所以这类函数注释,老老实实手写,或用 IDE 内置模板(PHPStorm 输入 /** + 回车自动展开,VS Code 安装 PHP DocBlocker 插件后也支持)。重点检查三处:

  • 参数个数是否和函数签名一致(特别是默认值参数要不要写 @param)
  • @return 类型是否与实际返回对象匹配(再次强调:不是 json() 的输入数组,而是它的返回值)
  • 有没有漏掉可能抛出的异常类型(比如 show() 本身不 throw,但如果你封装了 Db::transaction(),就要加 @throws \think\db\exception\DataNotFoundException)

最易忽略的一点:TP5 的 common.php 是被所有请求共享加载的,里面函数的注释一旦写错类型,会影响整个项目的静态分析结果。宁可少写,也不要写错。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

100

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

100

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

80

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

60

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

80

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

280

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

180

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

140

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

80

2026.09.22

热门下载

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

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn