我必须编写以下代码(使用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',
]
]);
有没有办法让这些字符串自动完成?也许是一些注释暗示或什么?
答案 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
如果在当前文件中已经提到过这样的类名。)