PHP 开发工具扩展包 使用笔记

前置知识

PHP代码风格指南

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)

规则和配置文件

可用内置规则地址 Laravel框架规则集地址

配置文件生成工具

点击问号,查看配置工具使用说明

通过规则风格筛选 比如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]:
 > 

使用 Travis-CI 做自动化测试

使用 StyleCI 自动修复代码格式

编辑器相关插件如下