我必须编写以下代码(使用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/