一、团队编码规范工具
1. PHP Code Sniffer
安装
composer global require "squizlabs/php_codesniffer=*"
设置格式化规则
Editor | Code Style | PHP | Set from (PSR1 / 2)
设置工具路径:在 PhpStorm 的 Preferences | Languages & Frameworks | PHP | Quality Tools 配置界面中填写C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\php\phpcs.bat(以实际路径为准)
- 设置代码检测:Editor | Inspection | Quality Tools | 勾选PHP Code Sniffer Validation
只验证.php - Coding Standard选择PSR2
2.PHP CS fixer
安装
composer global require friendsofphp/php-cs-fixer
设置工具路径:在 PhpStorm 的 Preferences | Languages & Frameworks | PHP | Quality Tools 配置界面中填写C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\php-cs-fixer.bat(以实际路径为准)
- 新建一个外部工具;Preferences | Tools | External Tools 界面点击「+」
- 具体配置
name:phpcsDescription :apply php-cs-fixer to current fileProgram:C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\php-cs-fixer.bat(以实际路径为准)Argument:fix $FileDir$/$FileName$Working directory:$ProjectFileDir$
name:phpcbfDescription :apply php-cs-fixer to current fileProgram:C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\phpcbf.bat(以实际路径为准)Argument:$FileDir$/$FileName$Working directory:$ProjectFileDir$
- 右键菜单使用
单个文件操作
文件->右键external Tools -> phpcs - 设置代码检测:Editor | Inspection | Quality Tools | 勾选PHP Cs Fixer Validation
Ruleset选择PSR2
3. Mess Detector
安装:
composer global require "phpmd/phpmd=*"
设置工具路径:在 PhpStorm 的 Preferences | Languages & Frameworks | PHP | Quality Tools 配置界面中填写C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\phpmd.bat(以实际路径为准)
- 设置代码检测:Editor | Inspection | Quality Tools | 勾选PHP Mess Detect Validation
勾选 Naming、Unused
二、常用快捷键
1. 查找 / 定位
- F2(Shift+F2)
- 功能: 下/上高亮错误或警告快速定位
- CTRL+N
- 功能:查找类(Classes)
- CTRL+SHIFT+N
- 功能:查找文件(Files)
- CTRL+SHIFT+ALT+N
- 功能:查找类中的方法或变量(Symbols)
- CIRL+B / F4
- 功能:找变量的来源,跳到变量申明处
- CTRL+G
- 功能:定位行,跳转行
- CTRL+F
- 功能:在当前窗口查找文本
- CTRL+SHIFT+F
- 功能:在指定路径查找文本(默认全局搜索)
- CTRL+R
- 功能:当前窗口替换文本
- CTRL+SHIFT+R
- 功能:在指定路径替换文本(默认全局替换)
- CTRL+E
- 功能:最近打开的文件
2. 自动代码
- ALT+回车
- 功能:导入包,自动修正(注释)
- CTRL+ALT+L
- 功能:格式化代码(建议没事就按一按)
- CTRL+J
- 功能:自动代码提示,自动补全
- CTRL+ALT+T
- 功能:把选中的代码放在 TRY{} IF{} ELSE{} 里
- CTRL+ALT+Shift+T
- 功能:重构代码(Refractor)
- Alt + Insert
- 功能:生成代码(如GET,SET方法,构造函数等)
- CTRL+Shift+回车
- 功能:智能完善代码,如:输入if()后按快捷键
3. 复制快捷方式
- CTRL+C
- 功能:复制
- CTRL+V
- 功能:粘贴
- CTRL+X
- 功能:剪切,删除行
- CTRL+D
- 功能:复制行(Sublime用户习惯替换成Alt + J相同功能)
4. 其它快捷方式
- CTRL+Z
- 功能:倒退(代码后悔)
- CTRL+SHIFT+Z
- 功能:撤回倒退
- CTRL+/
- 功能:切换注释代码(行级别)
- CTRL+SHIFT+/
- 功能:切换注释代码(块级别)
- CTRL + 加减号
- 功能:切换折叠代码
- CTRL+Shift+U
- 功能:选中的字符大小写转换
- CTRL+F4
- 功能:关闭当前的编辑器或选项卡(Sublime用户习惯替换成Ctrl + W)
- Ctrl + Shift + A
- 功能:查找快捷键,如按下快捷键后输入“Reformat Code”
- Tab
- 功能:缩进
- Shift + Tab
- 功能:取消缩进
- Ctrl + Y
- 功能:删除行(Sublime用户习惯替换成Ctrl + Delete)
- 按2下Shift
- 功能:查找所有命令(文件、类、方法、变量),最好记最好用的快捷键
- Ctrl + 鼠标点击变量/函数
- 功能:同“CTRL + B”,快速定位变量/函数的定义位置
快捷方式多用几次就记住了,用的越多记得越多,记得越多效率越高
三、注解(PHPDoc Comment)
1. 基本使用
- 函数体直接写@return
```php
<?php
/**
- @param int $db
- @return \Redis
*/
function getRedis($db = 0) {
$obj = new \Redis();
$obj->select($db);
}return $obj;
$redis = getRedis(); $redis->get(‘key’); //由于getRedis方法说明了返回值,所以此处get方法可以正确提示
- PHP7语法:方法定义直接描述返回值```php<?phpclass Query {public function select() {return 'ok';}}class Db {public static function getQuery(): Query {return new Query();}}$query = Db::getQuery();$result = $query->select();var_dump($result);
2. 自动生成
将光标移动到php函数参数小括号中 按组合键 Alt + Enter会弹出修改菜单,选择 Update PHPDoc Comment选项后,点击回车,即可。见下gif图。
3. 人为描述
- 常用场景:观察者模式,监听者列表是数组类型,foreach遍历的时候,方便PHPSTORM快速定位。 ```php <?php
// 其他代码及注释不重要,直接看 27 行代码写的 @var
class Observer { public function update(Event $ev) { // 处理观察者拓展业务 var_dump(‘接收到事件,处理业务’); var_dump($ev); } }
class Event { private $observers = [];
public function addObserver(Observer $observer) {$this->observers[] = $observer;}// 触发事件public function trigger() {// 此处省略实际业务的代码// 处理事件自身业务后,再通知所有事件的监听者foreach($this->observers as $observer) {/*** 注意此处!如果什么都不写,IDE并不知道遍历的变量是什么类型,update无法提示!* @var Observer $observer* 写完上面那1行@var之后,你会发现,按住Ctrl不放,鼠标挪到update可以点击了!*/$observer->update($this);}}
}
// 此处仅做代码演示,实际业务Observer应该是抽象类,每个实例对象应该是子类实例 $observer1 = new Observer(); $observer2 = new Observer();
// 创建一个实际业务,添加监听者后,触发事件 $event = new Event(); $event->addObserver($observer1); $event->addObserver($observer2); $event->trigger(); ```
- 其他用法:比如Thinkphp5使用魔术方法
__callStatic定义日志类的语法糖,在类的最上面定义类中不存在的方法列表,使得我们在写Log::info()可以快速定位info所在的类

总结:如果PHPStorm无法提示某个变量或函数定义的位置,我们就可以在使用处显式写注解,或者在类的头部写描述注解
四、其它技巧
1. 显示行号
File->Settings->Editor->Appearance标签项,勾选Show line numbers
2. 自定义快捷键
File->Settings->Keymap
