PHP代码怎么规范书写_达内教授的编程风格建议【建议】

2次阅读

php代码规范的核心在于可读性与可维护性:命名直说意图、函数单一职责、错误处理明确、逻辑边界清晰,而非仅遵循psr-12格式。

PHP代码怎么规范书写_达内教授的编程风格建议【建议】

PHP 代码是否“规范”,不取决于有没有用上 PSR-12 或是不是缩进四格,而在于别人(包括三个月后的你自己)能不能不查文档、不翻上下文就看懂 $user->save() 这一行到底干了什么、有没有副作用、失败了会抛什么异常。

命名要直说意图,别玩缩写和拼音

变量、方法、类名不是密码游戏。看到 $usr 得猜是 user 还是 usd rate;getUsrInfo()getUserData() 更模糊——data 是数组?对象?还是 raw json 字符串

  • $user$u$usr 好,哪怕多敲两个字母
  • calculateTotalPriceWithTax()calc() 强,哪怕它只在三行内调用一次
  • 布尔型变量/方法名必须带 is / has / can:比如 isEmailVerifiedcanDeletePost(),而不是 email_verifieddeleteable
  • 避免拼音:$yonghu 在团队协作或 ide 自动补全里等于自废武功

函数体别超 20 行,且只做一件事

一个叫 processOrder() 的方法,如果里面混着校验库存、扣减余额、发短信、写日志、触发 webhook,那它已经不是函数,是“流程脚本”。下次改发短信渠道,你得通读全部逻辑防误伤。

  • 把校验拆成 validateStock(),把通知拆成 notifyUserBySms(),把日志单独抽成 logOrderProcessed()
  • 每个函数只返回一种类型:要么总是 bool,要么总是 Array|false,别用 return $result ?: NULL 让调用方反复 isset() 判断
  • 参数超过 3 个时,优先用值对象(Value Object)或关联数组(但得配好类型注释),别硬塞 function createInvoice($id, $type, $date, $currency, $taxRate, $notes)

错误处理别吞异常,也别裸 throw

try { ... } catch (Exception $e) { } 是最危险的静默陷阱;而 throw new Exception('Failed') 又让下游完全无法区分是网络超时还是数据库唯一键冲突。

立即学习PHP免费学习笔记(深入)”;

  • 捕获具体异常类:catch (PDOException $e)catch (HttpClientException $e),别一锅端
  • 重抛时保留原始异常链:throw new OrderProcessingException('Payment failed', 0, $e)
  • 业务逻辑里少用 die()exit(),它们绕过所有 shutdown handler 和中间件,线上查问题时等于关掉所有探针
  • 对可预期失败(如用户邮箱已存在),用返回值或特定异常(如 UserAlreadyExistsException),而不是靠 if ($result === false) 魔数判断

PSR-12 不是终点,是起点

格式化工具(如 PHP-CS-Fixer)能帮你统一缩进、空格、花括号位置,但它不检查 new DateTime('now') 是否该换成 new DateTimeImmutable('now'),也不提醒你 foreach ($items as $item) 里直接修改 $item 并不会更新原数组。

  • 先跑 php-cs-fixer fix --rules=@PSR12,再人工过一遍逻辑边界
  • 在 CI 中强制检查:提交前没过 phpstan analysepsalm --no-cache 就不让合并
  • 注释别写“初始化变量”,而写“此处跳过缓存因需实时汇率”——后者才是未来救你的那行字

真正难的从来不是“怎么写对”,而是“怎么让下一个人不用停下来想你在想什么”。变量名、函数职责、错误路径,这三处写清楚了,PSR 就只是顺手的事。

text=ZqhQzanResources