在多人协作的PHP项目中,代码风格不一致会导致阅读困难、合并冲突频繁,甚至隐藏bug。代码规范不仅提升可读性,还能通过自动化工具提前发现潜在问题。PHP社区最广泛接受的规范是PSR(PHP Standard Recommendations),其中PSR-1和PSR-12是基础。
PSR-1定义了最基本的规则:
<?php或<?=标签。<?php
namespace App\Models;
class UserProfile
{
const MAX_AGE = 120;
public function getDisplayName(): string
{
return $this->firstName . ' ' . $this->lastName;
}
}
PSR-12在PSR-2基础上更新,兼容PHP 8+特性。关键点包括:
if、else)后必须跟一个空格。<?php
namespace App\Services;
use App\Models\User;
class UserService
{
public function create(array $data): User
{
if (empty($data['email'])) {
throw new \InvalidArgumentException('Email is required');
}
$user = new User();
$user->email = $data['email'];
$user->name = $data['name'] ?? '';
$user->save();
return $user;
}
}
安装:composer require --dev squizlabs/php_codesniffer
检查:./vendor/bin/phpcs --standard=PSR12 src/
自动修复:./vendor/bin/phpcbf --standard=PSR12 src/
安装:composer require --dev friendsofphp/php-cs-fixer
配置示例(.php-cs-fixer.dist.php):
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/src')
->exclude('vendor');
return (new PhpCsFixer\Config())
->setRules([
'@PSR12' => true,
'array_syntax' => ['syntax' => 'short'],
'no_unused_imports' => true,
])
->setFinder($finder);
运行:./vendor/bin/php-cs-fixer fix
# .editorconfig
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
--path-mode限定范围。/**
* 计算两个数的和
*
* @param int $a 第一个数
* @param int $b 第二个数
* @return int 和
*/
function add(int $a, int $b): int
{
return $a + $b;
}
代码规范不是束缚,而是团队协作的加速器。通过PSR标准+自动化工具,可以大幅减少代码审查中的风格争论,让开发者专注于业务逻辑。从今天开始,为你的项目配置PHP_CodeSniffer,并逐步统一团队规范吧!
专注技术分享与实战