PhpStorm - 类名作为字符串建议

时间:2017-11-01 11:34:38

标签: intellij-idea autocomplete phpstorm intellisense

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

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

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

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

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

有没有办法让这些字符串自动完成?也许是一些注释暗示或什么?

1 个答案:

答案 0 :(得分:2)

为什么不使用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如果在当前文件中已经提到过这样的类名。)