intellij-idea - PhpStorm - 类名作为字符串建议

标签 intellij-idea autocomplete phpstorm intellisense

我必须编写以下代码(使用Zend\Filter\Inflector):

$inflector = new Inflector(':string');
    $inflector->setRules([
        ':string' => [
            new StringToLower(),
            new UnderscoreToSeparator(),
            new DashToCamelCase(),
            new UpperCaseWords(),
        ]
    ]);

如您所见,它使用了 4 次 new 关键字,立即实例化类(遵循 Zend Filter 接口(interface))。在这种情况下,自动完成工作正常,PhpStorm 很容易找到我想要在 new 之后输入的内容。

但是使用工厂更好的表示法是使用字符串,而不是使用 new 直接实例化:

 $inflector = new Inflector(':string');
    $inflector->setRules([
        ':string' => [
            'StringToLower',
            'UnderscoreToSeparator',
            'DashToCamelCase',
            'UpperCaseWords',
        ]
    ]);

有没有办法自动完成这些字符串?也许有一些注释提示什么的?

最佳答案

为什么不使用UpperCaseWords::class?结果值(将在运行时可用)将为 FQN。

我不熟悉 Zend Framework,所以我不确定 Zend\Filter\Inflector 是否接受 FQN 或者它仅限于/只需要类名(它应该接受 FQN ...因此用户创建的类也将被接受/这是预期的行为)。

好处:还将支持重构/查找用法(因为这是一段代码而不仅仅是一个字符串)。


无论如何:字符串中的类名补全应该自 2017.1.4 起工作(在当前稳定版 2017.2.4 中工作正常)。

您只需再调用一次代码完成(例如 Ctrl + Space 两次(或计算机/操作系统上的任何其他快捷方式,用于 Code | Completion | Basic )) .. 或者直接使用 Ctrl + Alt + Space (类名补全)。

显然,如果在字符串的开头调用完成,它将起作用。如果它位于中间/末尾(例如“use [CLASS_NAME_EXPECTED_HERE]”) - 手动输入整个内容或尝试其他完成方法(例如Cyclic Expand Word,如果这样的话)类名已在当前文件中提及)。

关于intellij-idea - PhpStorm - 类名作为字符串建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053885/

相关文章:

python - 如何防止 Intellij python 调试器单步执行内置函数?

debugging - 如何在 PHPStorm 中显示当前调试的行?

Angular 5.0.2 混淆了 PhpStorm 中的 Promise 类定义 + --prod 上的错误

ide - PHPStorm 保存时间歇性提示 "File Cache Conflict"对话框

java - 如何在 IntelliJ 中控制 Spark 日志记录

intellij-idea - IntelliJ IDEA : Increase size of bar on the right side of editor

java - EXE4J Jar 到 exe 与 jre 集成导致运行时错误

jquery - Django - django-autocomplete-light 设置如何

java - 需要有关验证自动完成的帮助

c - Eclipse:如何添加自动完成要使用的包含路径