一、团队编码规范工具

1. PHP Code Sniffer

  • 安装

    1. composer global require "squizlabs/php_codesniffer=*"
  • 设置格式化规则

    1. 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

参考文章:https://cloud.tencent.com/developer/article/1352473

2.PHP CS fixer

  • 安装

    1. 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 界面点击「+」
  • 具体配置
  1. namephpcs
  2. Description apply php-cs-fixer to current file
  3. ProgramC:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\php-cs-fixer.bat(以实际路径为准)
  4. Argumentfix $FileDir$/$FileName$
  5. Working directory$ProjectFileDir$
  1. namephpcbf
  2. Description apply php-cs-fixer to current file
  3. ProgramC:\Users\Administrator\AppData\Roaming\Composer\vendor\bin\phpcbf.bat(以实际路径为准)
  4. Argument$FileDir$/$FileName$
  5. Working directory$ProjectFileDir$
  • 右键菜单使用
    单个文件操作
    文件->右键external Tools -> phpcs
  • 设置代码检测:Editor | Inspection | Quality Tools | 勾选PHP Cs Fixer Validation
    Ruleset选择PSR2

参考文章:https://www.cnblogs.com/qinsilandiao/p/13769597.html

3. Mess Detector

  • 安装:

    1. 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

参考文章:https://www.cnblogs.com/imbin/p/7157244.html

二、常用快捷键

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);
      1. return $obj;
      }

$redis = getRedis(); $redis->get(‘key’); //由于getRedis方法说明了返回值,所以此处get方法可以正确提示

  1. - PHP7语法:方法定义直接描述返回值
  2. ```php
  3. <?php
  4. class Query {
  5. public function select() {
  6. return 'ok';
  7. }
  8. }
  9. class Db {
  10. public static function getQuery(): Query {
  11. return new Query();
  12. }
  13. }
  14. $query = Db::getQuery();
  15. $result = $query->select();
  16. var_dump($result);

2. 自动生成

将光标移动到php函数参数小括号中 按组合键 Alt + Enter会弹出修改菜单,选择 Update PHPDoc Comment选项后,点击回车,即可。见下gif图。
20181203090821485.gif

3. 人为描述

  • 常用场景:观察者模式,监听者列表是数组类型,foreach遍历的时候,方便PHPSTORM快速定位。 ```php <?php

// 其他代码及注释不重要,直接看 27 行代码写的 @var

class Observer { public function update(Event $ev) { // 处理观察者拓展业务 var_dump(‘接收到事件,处理业务’); var_dump($ev); } }

class Event { private $observers = [];

  1. public function addObserver(Observer $observer) {
  2. $this->observers[] = $observer;
  3. }
  4. // 触发事件
  5. public function trigger() {
  6. // 此处省略实际业务的代码
  7. // 处理事件自身业务后,再通知所有事件的监听者
  8. foreach($this->observers as $observer) {
  9. /**
  10. * 注意此处!如果什么都不写,IDE并不知道遍历的变量是什么类型,update无法提示!
  11. * @var Observer $observer
  12. * 写完上面那1行@var之后,你会发现,按住Ctrl不放,鼠标挪到update可以点击了!
  13. */
  14. $observer->update($this);
  15. }
  16. }

}

// 此处仅做代码演示,实际业务Observer应该是抽象类,每个实例对象应该是子类实例 $observer1 = new Observer(); $observer2 = new Observer();

// 创建一个实际业务,添加监听者后,触发事件 $event = new Event(); $event->addObserver($observer1); $event->addObserver($observer2); $event->trigger(); ```

  • 其他用法:比如Thinkphp5使用魔术方法 __callStatic 定义日志类的语法糖,在类的最上面定义类中不存在的方法列表,使得我们在写 Log::info() 可以快速定位info所在的类

image.png

总结:如果PHPStorm无法提示某个变量或函数定义的位置,我们就可以在使用处显式写注解,或者在类的头部写描述注解

四、其它技巧

1. 显示行号

File->Settings->Editor->Appearance标签项,勾选Show line numbers

2. 自定义快捷键

File->Settings->Keymap

五、参考资料