概述
在日常使用代码编辑器的过程中,频率非常高的一个需求就是能够快速全局导航到指定类、文件、方法、行,在 PhpStorm 中可以通过两种方式来实现这种导航。
一种是在菜单栏中点击 Navigate,然后在下拉框选择对应的全局导航,Class 代表类、File 代表文件、Symbol 代表符号/标记(可用于导航到指定变量、方法)、Line 代表行(需要在特定文件中操作)。
另一种是通过快捷键,上面的菜单栏下拉框导航选项右侧已经标注了对应的快捷键,下面我们就可以快捷键为例在 Mac 系统中进行演示(Windows 操作类似,就是快捷键有差异)。
导航到类、接口、Trait
打开一个新安装的最新版 Laravel 项目,以自带的 User
类为例,要导航到这个类,可以通过快捷键 Command O 打开导航窗口,在输入框输入 User
进行类名的全局模糊匹配,然后在下拉选项中选中要导航的类:
就会打开包含 User
类的文件了:
导航到其他类也是一样,这里不重复演示了。除了项目代码,还可以导航到 Composer 管理的 vendor
库中的所有第三方扩展包代码,比如我们想要查看 User
的父类 Model
:
另外,导航到指定接口和 Trait 共用了导航到指定类的功能,比如我们在类导航输入框中输入 Authenticatable
,则会列出对应的接口和 Trait:
导航到文件
在遵循 PSR-4 自动加载规范的现代 PHP 项目中,类名和文件名是一致的,所以导航到类也就意味着导航到了对应的文件,但对于一些不包含任何类的 PHP 文件,还是需要通过导航到文件功能进行跳转,比如应用初始化/启动文件、配置文件、路由文件以及定义 PHP 辅助函数的文件等。
我们可以通过快捷键 Shift Command P 文件打开导航到文件的操作界面,假设我们想要打开 Laravel 项目的数据库配置文件,可以在输入框输入 database
进行文件名的全局模糊匹配,然后在下拉框选中我们期望打开的文件:
即可跳转到对应的 database.php
配置文件:
如果想要打开定义 Laravel 自带辅助函数的 helpers.php
文件,操作方法完全一样,只需在导航输入框中输入对应文件名即可:
导航到属性、方法
除了类名和文件之外,PhpStorm 还支持更细粒度的 PHP 属性和方法导航,我们通过快捷键 Option Command O 打开对应的导航操作界面,假设我们想要在应用代码的 Kernel
类中新增一个全局中间件,可以在输入框输入 middleware
跳转到到这个属性中进行设置:
该方法也适用于变量名的全局导航:
导航到指定的类/Trait成员方法或者独立的 PHP 函数也是在同一个操作界面操作,比如我们想要查看 Laravel 自带的分页方法底层是如何实现的,可以在输入框输入 paginate
,然后选择我们想要查看的方法实现即可:
再比如,我们想要查看 Laravel 自带的 view
函数是如何实现的,在输入框输入 view
并选中要导航的方法即可:
跳转到行、列
最后,在已打开的当前文件中,可以通过 Command L 打开行列导航操作界面,输入要导航到的行号、列号即可,其中行和列通过「行号:列号」进行区分和解析:
列号一般不设置,默认值为 1
。
在图形化 UI 界面中,通常跳转到指定行、列的需求不大,我们可以通过鼠标和触摸屏快速定位到指定位置。
汇总导航
针对类、文件、属性、方法的导航,除了通过上述方式使用各自独立的快捷键和操作界面进行导航外,在 PhpStorm 中,还可以通过 Shift Shift 快捷键(连按两次 Shift 键)打开汇总导航操作界面(对应的功能叫做 Search Everywhere),一次输入,就可以全局匹配出所有相关的类、文件、属性、方法:
是不是非常方便?之所以叫做「Search Everywhere」,是因为除了这些导航功能之外,还可以通过 Actions 对 PhpStorm 系统设置进行快速定位(这个我们后面会单独介绍),换言之,你想要搜索的一切都可以通过这个输入框完成,也正因为这个原因,该功能对应的快捷键才能位于 PhpStorm 默认开机界面的榜首:
日常我们要做任何操作,不管是找文件、找代码,还是进行系统设置,都可以通过 Shift Shift 呼出导航界面进行快速跳转,它会成为你日常使用 PhpStorm 最频繁的快捷键操作。
上下文导航
以上导航都是全局导航,如果是在某一段具体的代码片段中,我们想要进行上下文导航,以 User
模型类的 posts
方法为例:
public function posts()
{
return $this->hasMany(Post::class, 'user_id');
}
如果我们想要查看 hasMany
方法对应的实现代码,可以按住 Command 键(Windows 下对应的是 Ctrl 键),然后鼠标/触摸屏点击 hasMany
方法,即可跳转到对应的方法实现代码:
看完之后,想要快速切换回调用它的 posts
方法,通过快捷键 Command [(切到操作序列中上一步代码的位置)即可,如果想再看看 hasMany
方法实现,通过 Command ](切到操作序列中下一步代码的位置)即可快速切换。