如何在Sublime Text中实现自定义/动态/魔术PHP函数的定义识别?
可行实现方案
方案一:使用LSP-intelephense插件(推荐,功能完整)
这是目前Sublime上对PHP支持度最高的方案,资源占用极低,不会破坏Sublime轻量的特性,原生支持PHPDoc注解解析。
- 安装步骤:
- 先通过Package Control安装
LSP基础插件 - 再安装
LSP-intelephense插件,安装完成后重启Sublime即可生效
- 先通过Package Control安装
- 适配方法:
- 自定义宏的注解直接按你预期的格式编写即可,注意静态方法要加
static标记,示例:
编写完成后即可触发goto_definition直接跳转到宏定义位置,同时支持参数补全、类型校验功能。/** * @method static Str truncate(string $value, int $length = 100, string $append = '...') * 或者单独标注全局函数 * @function truncate(string $value, int $length = 100, string $append = '...') */ Str::macro('truncate', fn(string $value, int $length = 100, string $append = '...') => '...');
2. 针对Laravel全局的门面、魔术方法、内置宏,可在项目中安装laravel-ide-helper composer包,执行生成命令后会在根目录生成_ide_helper.php注解文件,插件会自动读取该文件内容,无需手动编写大量注解。
3. 魔术方法适配:在类的文档块中添加对应的@method/@property注解即可被识别,示例:/** * @method mixed getCustomInfo(string $key) * @property string $custom_field */ class CustomClass { public function __call($name, $arguments) { // 魔术方法逻辑 } } - 自定义宏的注解直接按你预期的格式编写即可,注意静态方法要加
方案二:自定义Sublime符号匹配规则(无额外插件,纯原生)
如果不想安装任何插件,可以修改Sublime自带的PHP语法规则,将PHPDoc中的注解标记为可识别符号:
- 操作步骤:
- 打开命令面板,搜索
View Package File,输入PHP/PHP.sublime-syntax找到官方PHP语法定义文件,复制整份内容到User目录下保存为同名文件 - 找到文件中
contexts下的符号匹配规则段,新增以下匹配规则:
- match: ^\s*\*\s*@(method|function)\s+([\w\\:]+)\( captures: 2: entity.name.function.php - match: ^\s*\*\s*@property\s+[\w\|\[\]]+\s+(\$[\w]+) captures: 1: variable.other.property.php- 保存后重启Sublime,自带的符号索引就会识别PHPDoc中标记的方法、属性,支持goto_definition跳转。
- 打开命令面板,搜索
- 注意:该方案仅支持符号跳转,不支持参数补全、类型检查等IDE类功能。
内容的提问来源于stack exchange,提问作者Joel Mellon
相关产品推荐
相关产品推荐

