我想知道,是否可以根据传递给方法的参数完成代码。
示例:
class One { public function foo(){} }
class Two { public function bar(){} }
class DI {
public function get($name) {
if ($name === 'foo') {
return new One();
} elseif ($name === 'bar') {
return new Two();
}
}
}
(new DI())->get('one')->
为我提供了 foo 和 bar
有没有办法,如何告诉PhpStorm,如果名字是一个,我会上课One
?
答案 0 :(得分:0)
当然 - 看看Advanced Metadata support。
请注意,这种元数据仅在PhpStorm v9 (昨天刚刚发布)后才能使用,因为v8仅支持静态工厂。
例如:
<?php
namespace PHPSTORM_META {
$STATIC_METHOD_TYPES = [
\DI::get('') => [
"foo" instanceof \One,
"bar" instanceof \Two,
]
];
}
<强> P.S。强>
在您的代码中(内部方法get()
),您使用foo
和bar
作为键来定义要创建的类...但是当使用实际的DI->get()
时,您是使用类名作为键(例如one
)。我确定这只是一个错字..但仍然 - 下次尝试提供有效的代码作为例子。