前置知识
PSR
是 PHP Standard Recommendations
(PHP 推荐标准)的简写,由 PHP FIG 组织制定的 PHP
规范,是 PHP 开发的实践标准。中文文档 例如composer 遵循psr4标准
很多php框架和组件都遵循psr规范,因此要编写遵循行业规范的代码
PHP-CS-Fixer
推荐在项目中安装配置,因为不同的项目php版本和规范不同,依赖的php-cs-fixer的版本也不相同
安装
composer require --dev friendsofphp/php-cs-fixer
项目根目录创建 .php-cs-fixer.php 配置文件(旧版本为.php_cs) 并且将它纳入git版本管理,保证该项目的所有开发人员都使用相同的规范
将缓存文件.php-cs-fixer.cache 添加到.gitignore文件中 (旧版本为.php_cs.cache)
规则和配置文件
点击问号,查看配置工具使用说明
通过规则风格筛选 比如php版本,psr12等
选中需要的规则
点击导出按钮生成规则配置文件
如何使用
手动使用方式 文档
#指定规则运行
$ php php-cs-fixer.phar fix /path/to/project --rules=@PSR12
#框架项目中指定配置文件手动修复,以laravel为例,在项目根目录下执行
$ vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php
#执行结果如下
Loaded config default from ".php-cs-fixer.php".
1) app/Http/Controllers/Admin/CategoryController.php
2) app/Http/Controllers/Admin/HotKeywordsController.php
... 此处省略中间部分输出信息
205) routes/api.php
206) tests/Feature/CommonApiTest.php
Fixed all files in 2.135 seconds, 20.000 MB memory used
php-cs-fixer vscode插件 github
扩展>>安装 ,个人配置项
{
"php-cs-fixer.executablePath": "${extensionPath}/php-cs-fixer.phar",
"php-cs-fixer.onsave": true,
"[php]": {
"editor.defaultFormatter": "junstyle.php-cs-fixer"
},
}
PHPStan
付费替代品vscode 插件 PHP Intelephense 支持代码自动提示,跳转追踪和语法检测 99RMB永久授权
laravel版本 Larastan github 也是基于phpstan开发的
Laravel-ide-helper
安装
composer require --dev barryvdh/laravel-ide-helper
如果需要为模型生成字段,需要安装如下扩展包,参考文章是laravel5.5版本 跟laravel-ide-helper版本有关
laravel-ide-helper”: “^2.10″版本测试会自动安装doctrine/dbal 扩展包
composer require doctrine/dbal
生成配置文件 config目录下会生成ide-helper.php
php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config
为Facades生成文档提示,会在项目根目录下生成_ide_helper.php,可以根据团队需要决定是否将该文件加入.gitignore
php artisan ide-helper:generate
为模型生成注释,要在创建完成模型文件和数据迁移文件运行之后,若数据库字段有注释,则模型字段也会有注释
#不加命令参数给所有模型生成注释
php artisan ide-helper:models
#包含指定模型
php artisan ide-helper:models "App\Models\ExcelDemo"
#忽略指定模型
php artisan ide-helper:models --ignore="App\Models\BaseModel"
#会提示是否覆盖原模型,不覆盖会在根目录下生成_ide_helper_models.php文件,推荐no选项
Do you want to overwrite the existing model files? Choose no to write to _ide_helper_models.php instead (yes/no) [no]:
>