我坐在一个包含几个类的大型代码库上,这些类通过神奇地实现的方法(使用__call
和__callStatic
)公开功能。例如:
class Foo {
public function __call($name, $parameters) {
echo "You called $name().\n";
}
}
$f = new Foo;
$f->test(); // runs fine, but PhpStorm flags as a warning
问题是PhpStorm认为该test()
方法不存在,所以在调用处给出警告。这有点烦人,因为代码当然会按预期运行和表现。
我已经通过检查“如果类中存在 __magic 方法,则降级严重性”选项来调低严重性,但我更愿意:
- 仅针对特定类完全禁用此功能,或
- 与 IDE 合作而不是反对它——向它提供我已经拥有的信息,以便我们的观点一致
以上任何一种可能吗?如果是这样,怎么做?
额外的奖励问题:考虑方法调用被链接的情况。
$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine
假设魔术调用$f->test()
返回适当的后续(可能但不一定也是魔术)调用将正常工作。但是,由于我不知道有什么方法可以告诉 IDEtest()
返回什么,因此它会将调用链的其余部分也标记为缺少方法。更糟糕的是,“降级严重性”设置不适用于这些警告,因为 IDE 不知道这些中间对象应该是什么类。
有没有可以涵盖这种情况的解决方案?
更新
尽管用@method
注释记录魔法方法似乎有效,但我不得不假设这种方法目前存在几个问题,因为我只花了一点工作就发现了这些相关的错误:
我确实希望他们在合理的时间范围内修复它们。