echo 可用逗号连接多参数 (echo $a, $b) 避免字符串拼接开销。static 就定义,速度提升近 4 倍。$row['id'] 比 $row[id] 快 7 倍 (后者会触发常量查找)。echo 优于 print:且用逗号分隔多参数而非点号拼接。for 循环勿在条件中重复计算 count(),优先用 foreach。unset() 释放大数组内存。__get/__set/__autoload 有性能损耗。require_once():开销大,明确依赖用 require。include_path 遍历查找。$_SERVER['REQUEST_TIME']:比 time() 精准且无函数调用开销。strpos) 比 preg_* 快得多。strtr > str_replace > preg_replace:字符替换效率 strtr 是 str_replace 4 倍。switch 优于多重 if-else:跳转表机制更高效。@ 抑制错误:极其低效,改用条件判断或错误处理器。mod_deflate:压缩传输提升浏览速度。display_errors,记录日志。$this->prop++ 比局部变量慢 3 倍。坚持 <?php ?>,弃用短标签 <? ?>。短标签依赖 short_open_tag 配置,迁移服务器极易导致解析失败,重构成本高。
error_reporting(E_ALL) 调试开发阶段文件第二行加入:
error_reporting(E_ALL);
可暴露所有 Notice/Warning/Error,定位问题更精准。
报错提示第 561 行?现代编辑器 (EditPlus/PhpStorm/VS Code) 按 Ctrl+G 输入行号瞬间跳转,无需记事本复制粘贴。
PHP 注释不输出到前端,三种形式:
// 单行注释 # Shell 风格单行注释 /* 多行 块注释 */
建议:文件头版权/功能说明、类/方法 DocBlock、复杂逻辑块内联注释。
虽非强制,但统一缩进 (Tab/4 空格) + 大括号风格 (K&R/Allman) 能大幅降低认知负荷。推荐配置编辑器自动格式化 (如 PHP-CS-Fixer)。
包含前检查存在性,避免路径泄露:
if (!file_exists('layout.inc.php')) {
exit('Error: Layout File Missing');
}
include_once 'layout.inc.php';
错误写法:
mysql_query("INSERT ..."); // 失败静默
正确写法:
mysql_query("INSERT ...") or exit('MySQL Error: ' . mysql_error());
注:mysql_* 已废弃,生产环境请用 PDO/MySQLi + 预处理语句防注入。
冗余:
if (!$_POST['name']) exit('...');
if (!$_POST['email']) exit('...');
精简:
if (!$_POST['name'] || !$_POST['email']) exit('...');
||/OR、&&/AND 等价,前者优先级更高。
echo 完胜 print速度更快、字符更少、支持多参数。无理由用 print。
避免频繁进出 PHP 标签或逐行 echo:
echo <<<END
<div class="container">
<h1>{$title}</h1>
<p>{$content}</p>
</div>
END;
变量直接内插,可读性强、性能佳。
性能优化与代码规范是硬币两面:前者关注运行时效率,后者关注开发时效率与长期维护性。内化这 20 条法则与 10 条规范,配合现代工具链 (静态分析、自动格式化、单元测试),方能写出高性能、可维护、专业级的 PHP 代码。