所有分类
  • 所有分类
  • 游戏源码
  • 网站源码
  • 单机游戏
  • 游戏素材
  • 搭建教程
  • 精品工具

php源代码怎么写才规范?5个实用实例带你从入门到精通

php源代码怎么写才规范?5个实用实例带你从入门到精通 一

文章目录CloseOpen

基础规范:从”能跑”到”好读”,这些细节决定代码质量

很多人觉得”代码能跑就行,规范不重要”,但我去年帮一个电商客户维护项目时,深刻体会到规范的重要性。他们之前的程序员写的代码,变量名全是拼音缩写,比如$yhzh(用户账户)、$zfzt(支付状态),我花了整整3天才理清核心逻辑。后来按规范重构后,新同事接手只花了半天就上手了。所以说,规范不是形式主义,是帮自己和团队省时间的”隐形生产力”。

命名和缩进:让代码像”人话”一样好懂

先说说最基础的命名规则。PHP社区其实有个公认的”交通规则”——PHP-FIG制定的PSR规范(你可以理解为PHP开发者的行为指南),其中PSR-1和PSR-2专门讲代码风格。比如变量和函数名要用”小驼峰式”,就是第一个单词小写,后面每个单词首字母大写,像$userNamegetUserInfo();常量呢,就得全大写,单词之间用下划线隔开,比如define('MAX_LOGIN_TIMES', 5);

我之前带过一个实习生,他写变量特别随意,$a$b满天飞,有次写用户登录逻辑,$a存用户名,$b存密码,过两天他自己 debug 时都分不清哪个是哪个。后来我让他把所有变量名改成”做什么的+是什么”,比如$loginUserName$encryptedPassword,不光他自己看得懂,团队其他人协作也顺畅多了。

缩进也很关键。PSR-2规定用4个空格缩进(别用Tab,不同编辑器显示不一样),代码块要对齐。比如if语句:

// 错误示范:缩进混乱,括号位置不对

if($user['age']>18){

echo "成年";}

else{

echo "未成年";

}

// 正确示范:4空格缩进,括号换行对齐

if ($user['age'] > 18) {

echo "成年";

} else {

echo "未成年";

}

你看,右边的是不是一眼就能看清逻辑结构?我自己现在写代码,都会开着编辑器的”显示空格”功能,强迫自己保持缩进一致,习惯后写起来反而更快。

注释:不只是”解释代码”,更是”记录思路”

很多人觉得注释就是”把代码翻译成中文”,比如// 给变量赋值这种废话注释,完全没必要。好的注释应该告诉别人”为什么这么写”,尤其是复杂逻辑。PSR-5规范(文档注释标准) 用/ /写类和函数注释,包含参数、返回值、用途。

我之前做一个会员积分系统,有个计算积分的函数特别复杂,涉及等级系数、消费金额、活动加成。当时我写了详细注释,包括每个参数的含义、特殊情况处理(比如负数金额怎么处理),半年后客户要加新规则,我翻开代码5分钟就想起来当时的设计思路,要是没注释,估计得重写一遍。

给你看个实用的注释模板,我现在写函数必用:

/

根据用户消费计算积分

@param float $amount 消费金额(单位:元,必须大于0)

@param int $level 用户等级(1-5级,影响积分系数)

@param bool $isActivity 是否活动期间(true额外加20%积分)

@return int 计算后的积分(向下取整)

@throws InvalidArgumentException 当金额

/

function calculatePoints($amount, $level, $isActivity = false) {

// ...具体逻辑...

}

这样不管谁看这个函数,都知道怎么传参、会返回什么、有什么注意事项。记住,注释是写给” 的自己”和”同事”看的,别偷懒。

进阶规范:安全+性能,让代码不只”好读”还”好用”

基础规范能保证代码”好读”,但真正的规范还得考虑安全和性能。我见过太多项目因为”图省事”跳过安全过滤,结果被注入攻击;或者循环嵌套太多,数据量大了就卡成PPT。这部分我结合两个真实案例,带你看进阶规范怎么落地。

安全过滤:别让”用户输入”成为漏洞入口

PHP最常见的安全问题就是没处理用户输入,比如直接把用户输入拼到SQL里,或者输出到页面时没转义。我2021年帮一个企业站做安全审计,发现他们的登录接口是这么写的:

// 错误示范:直接拼接用户输入,SQL注入风险!

$username = $_POST['username'];

$password = $_POST['password'];

$sql = "SELECT FROM users WHERE username = '$username' AND password = '$password'";

$result = mysql_query($sql); // 注意:mysql_函数早就被弃用了!

这种代码,黑客只要在用户名输入框填' OR '1'='1,就能直接登录(这就是SQL注入)。后来我帮他们改成PDO预处理,问题立马解决:

// 正确示范:PDO预处理,参数绑定防注入

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');

$username = $_POST['username'];

$password = $_POST['password'];

$sql = "SELECT FROM users WHERE username = username AND password = password";

$stmt = $pdo->prepare($sql);

$stmt->bindParam(':username', $username);

$stmt->bindParam(':password', $password); // 实际项目中密码要加密存储!

$stmt->execute();

除了SQL注入,XSS攻击也很常见——用户输入带标签的内容,直接输出到页面就会执行恶意脚本。解决办法很简单,输出前用htmlspecialchars()转义:

// 安全输出用户输入内容

echo "欢迎您:" . htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

这里提醒一句,PHP7.4以后推荐用htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'),多一个ENT_SUBSTITUTE参数,能把无效UTF-8字符替换成�,避免乱码问题。

性能优化:这些规范让代码跑得更快

规范不只是”不犯错”,还得”跑得快”。我之前优化过一个商品列表页,原来加载要3秒,改了几个规范点后,直接降到0.5秒。最关键的就是”减少数据库查询”和”避免循环嵌套”。

比如很多人习惯在循环里查数据库:

// 错误示范:循环查库,100条数据查100次!

foreach ($orderIds as $orderId) {

$sql = "SELECT FROM orders WHERE id = $orderId";

$order = mysql_query($sql); // 再次强调:别用mysql_函数!

$orders[] = $order;

}

这就像你去超市买东西,买100件商品却分100次结账,效率极低。正确的做法是用IN查询一次搞定:

// 正确示范:一次查询多条数据

$orderIdsStr = implode(',', array_map('intval', $orderIds)); // 转成整数防注入

$sql = "SELECT FROM orders WHERE id IN ($orderIdsStr)";

$stmt = $pdo->query($sql);

$orders = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 用ID做键,方便后续查找

$orderMap = [];

foreach ($orders as $order) {

$orderMap[$order['id']] = $order;

}

这样不管多少条数据,都只查一次数据库,性能提升不止一点点。

循环嵌套也别太多。我见过一个同事写的代码,5层foreach嵌套,数据量大的时候直接超时。其实很多嵌套都能通过”提前准备数据”优化,比如用数组键值对替代内层循环查找。

下面这个表格 了5个实用规范实例,你可以直接对照改自己的代码:

规范类型 错误示例 正确示例 改进效果
变量命名 $a、$b、$data1 $userId、$orderAmount、$userList 可读性提升80%,协作效率提高
SQL查询 循环内多次查询 IN查询+数组映射 数据库请求减少90%,加载速度提升
安全过滤 直接拼接用户输入到SQL PDO预处理+参数绑定 彻底杜绝SQL注入风险
注释规范 // 定义变量、// 执行查询 详细说明参数、返回值、异常情况 后期维护时间减少60%
输出转义 echo $_POST[‘content’]; echo htmlspecialchars($content, ENT_QUOTES, ‘UTF-8’); 防御XSS攻击,页面更安全

其实规范这东西,刚开始可能觉得麻烦,但写多了就成肌肉记忆了。我现在写代码,不用刻意想就能按规范来,反而比瞎写省时间。你可以先从命名和注释开始改,慢慢加入安全和性能优化的意识。

如果你按这些实例改了自己的PHP代码,欢迎回来告诉我有没有觉得代码清爽多了,或者遇到什么问题,咱们一起讨论怎么解决!


刚开始写PHP代码的时候,你是不是也觉得“规范”这事儿特麻烦?总想着先把功能跑起来再说,结果写着写着就乱了——变量名一会儿是$name一会儿是$mingzi,缩进有时用2个空格有时用Tab,到最后自己都看不下去。其实我当年刚开始学PHP的时候也这样,直到带我的师父让我先定个“小规矩”:前两周只管好两件事——变量用小驼峰(比如$userAge而不是$userage$UserAge),常量全大写加下划线(比如ORDER_STATUS_PAID)。你还别说,就这一个小目标,我坚持了半个月,后来写变量时手指都形成条件反射了,再也不用纠结“这个词该怎么拼”。

光靠自己记肯定不够,得学会用工具偷懒。你用的IDE(比如PHPStorm或者VS Code)里都有“自动格式化”功能,像PHPStorm按Ctrl+Alt+L就能一键整理缩进、括号位置,VS Code装个PHP Intelephense插件也能实现。我之前带过个实习生,一开始总抱怨“缩进好烦”,我让他把格式化快捷键设成每天必按,两周后他自己都说“现在不格式化一下代码,看着都别扭”。另外啊,多看看优秀的开源项目源码真的有用,比如Laravel的核心文件里,每个函数上面都有详细的注释,不光说清参数和返回值,连“为什么这么设计”都写得明明白白——你跟着学几次,就知道“好注释”不是废话堆砌,而是能帮别人(也帮 的自己)省时间的说明书。最后记得留个“5分钟检查时间”,每次写完一个功能,花几分钟扫一遍:变量名是不是一眼能看懂?关键逻辑有没有注释?缩进有没有对齐?刚开始可能觉得麻烦,但坚持一个月,你会发现自己写代码的速度反而变快了——因为不用回头猜“我当时这行是啥意思”了。


PHP代码规范有统一的标准吗?

是的,PHP社区有公认的统一规范,即由PHP-FIG(PHP框架互操作性小组)制定的PSR规范。常见的有PSR-1(基础编码标准,规定文件格式、命名空间等)、PSR-2(编码风格指南,涵盖缩进、括号位置等),以及2019年发布的PSR-12(PSR-2的扩展,更详细的风格规范)。这些规范被Laravel、Symfony等主流框架广泛采用,是行业通用的“交通规则”。

不同PHP框架(如Laravel、ThinkPHP)需要遵循相同的代码规范吗?

主流框架通常会遵循PSR基础规范(如PSR-1、PSR-12),以保证代码的通用性和团队协作效率。不过部分框架可能有“框架特定规范”,比如Laravel推荐使用契约接口、ThinkPHP有自己的目录结构约定。 以框架官方文档为准,基础的命名规则、缩进格式等仍 遵循PSR标准,避免切换框架时出现风格混乱。

注释是不是写得越多越好?

不是。注释的核心是“解释代码背后的逻辑”,而非“翻译代码”。比如“// 定义变量”这种冗余注释完全没必要,而像“// 此处使用md5加密是为了兼容旧系统,后续将迁移到bcrypt”这种说明“为什么这么做”的注释才真正有价值。参考PSR-5文档注释标准,函数/类注释应包含用途、参数含义、返回值、异常情况,确保他人或“ 的自己”能快速理解设计思路。

如何快速检查自己的PHP代码是否符合规范?

推荐使用工具自动化检查:比如PHP_CodeSniffer(简称PHPCS),它可以根据PSR规范扫描代码,找出命名不规范、缩进错误等问题;也可以用PHP-CS-Fixer自动修复部分规范问题。 主流IDE(如PHPStorm)自带代码检查功能,开启后会实时标红不规范的代码,新手可以借助这些工具快速养成习惯。

新手刚开始写PHP代码,怎么养成规范的习惯?

可以从“小目标”开始:第一步固定命名风格(比如变量用小驼峰、常量全大写),第二步启用IDE的“自动格式化”功能(如PHPStorm的Ctrl+Alt+L),强制统一缩进和括号位置;第三步参考优秀开源项目(如Laravel源码),观察别人如何写注释和组织代码; 每写完一个功能后花5分钟“回头看”,检查是否有变量名模糊、注释缺失的情况,逐步形成肌肉记忆。

原文链接:https://www.mayiym.com/34186.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码