同样实现一个业务功能,有的写出来的代码逻辑清晰、结构漂亮,接手的人改起来很舒服;也有的代码写得像一团乱麻,没人敢碰,生怕改一个地方崩一片。差距通常不在语法会不会,而藏在日常的编码习惯和优化意识里。
今天聊 6 个特别实用的 PHP 编码好习惯,没有废话,看完就能往项目里用。坚持下来,代码质量和你的专业度都会有肉眼可见的提升。
一、变量命名见名知意,拒绝拼音简写
不管自己写还是团队合作,最怕看到这种代码:
$sj = '13800138000'; // 手机?
$zh = 'admin'; // 账号?
$mm = '123456'; // 密码?
瞬间脑壳疼——得先做一轮「阅读理解」。
好的变量名,自己三个月后回来看也能秒懂:
$mobile = '13800138000';
$account = 'admin';
$password = '123456';
命名的原则很简单:看名字就知道它存的是啥。用完整的英文单词,千万别图省事用拼音缩写。orderStatus 这种写起来多打几个字母,却能让整个文件的可读性上一个大台阶。
二、重复逻辑及时封装成函数或类
同一个逻辑如果在两三个地方出现,就应该马上想到封装。比如手机号验证,到处复制粘贴这一段:
if(preg_match('/^1[3-9]\d{9}$/', $phone)){
// 通过
}
万一以后验证规则变了(比如新增号段),得满项目找着改,非常容易漏掉。
更好的做法是抽成一个工具函数:
functionisMobile($phone)
{
return preg_match('/^1[3-9]\d{9}$/', $phone);
}
以后所有地方只需调用 isMobile($phone),规则变一次就全搞定。表单验证、日期格式化、权限判断等等,全都适用这个思路——一段代码出现第三次,就一定要封装。
三、严格做参数校验和空值判断
线上很多诡异 bug,根源就是「以为外边传进来的值一定是正常的」。写函数或接口时,要养成第一行就校验参数的习惯:
functiongetUserInfo($userId)
{
// 尽早拦住异常参数
if (empty($userId) || !is_numeric($userId)) {
return ['error' => '参数错误'];
}
// 后续业务逻辑...
}
数组取值前先 isset(),对象调用前先判空,能避免大量 “500 错误” 和程序崩溃。尤其是接收前端参数、读缓存、查数据库返回值时,都得带上空值判断,别太信任外部数据。
四、减少多层 if 嵌套,简化逻辑
新手很容易写出这种“箭头型”代码:
if ($isLogin) {
if ($age >= 18) {
if ($age <= 60) {
$result = '成年';
} else {
$result = '老年';
}
} else {
$result = '未成年';
}
} else {
$result = '未登录';
}
收缩层级的最有效办法就是提前 return(或提前抛出异常):
if (!$isLogin) return'未登录';
if ($age < 18) return'未成年';
if ($age > 60) return'老年';
return'成年';
逻辑一目了然,后期再加新条件也容易插进去。能提前结束就走提前结束,别把所有情况都套在 else 里。
五、数据库查询尽量减少循环查库
这是实打实的性能杀手。比如要根据一堆 ID 取用户数据:
// ❌ 错误:循环里一次次查数据库
foreach ($ids as $id) {
$user = Db::name('user')->find($id);
// ...
}
如果有 100 个 ID,就会产生 100 次数据库查询,执行时间直线上升。
正确做法是用 in 查询一次性取出来:
// ✅ 正确:一条 SQL 搞定
$users = Db::name('user')->where('id', 'in', $ids)->select();
需要按 ID 做映射的话,查出来以后再 foreach 整理一下就好了。类似场景还有批量更新、批量插入,能用一条 SQL 解决的坚决不放在循环里。
六、注释写关键逻辑,不写废话注释
注释不是越多越好,是要写在关键点上。
这种注释有跟没有一样:
// 获取用户列表
$list = User::select();
代码本身已经很清楚在“获取用户列表”,注释在重复代码干的事,完全是信息垃圾。
好的注释应该解释为什么这么写、当时怎么考虑的:
// 只查在职且未删除的用户,离职员工数据不参与统计
$list = User::where('status', 1)
->where('is_deleted', 0)
->select();
复杂算法、临时方案、容易踩坑的“反直觉”逻辑,才值得写注释。代码交代做了什么,注释交代为什么这样做,这是最理想的状态。
以上就是这次分享的 PHP 新手避坑技巧,都是工作中实打实用得上的总结。六个习惯都不复杂,难在坚持。一旦内化成自己的编码本能,代码质量一定会往上走一大截。
如果觉得有用,欢迎点赞、收藏,方便以后随时翻出来回看。后续还会持续更新 PHP、ThinkPHP、MySQL 实战干货,不讲虚的,只聊落地能用的技术。建议收藏,也欢迎在评论区留言交流你在项目中踩过的坑。