gpt4 book ai didi

php - 如何处理神奇实现方法的 "method not found in class"警告?

转载 作者:IT王子 更新时间:2023-10-29 00:42:05 26 4
gpt4 key购买 nike

我正坐在一个大型代码库中,其中包含几个类,这些类通过神奇实现的方法(使用 __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 方法则降级严重性”选项来降低严重性,但我更愿意:

  1. 为特定类完全禁用此功能,或者
  2. 与 IDE 一起工作而不是反对它 -- 向它提供我已经掌握的信息以便我们的观点一致

以上是否可能?如果是,怎么做?

额外的奖励问题:考虑方法调用被链接的情况。

$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine

假设对 $f->test() 的魔术调用返回了适当的内容,后续(可能但不一定也是魔术)调用将正常工作。但是,由于我不知道如何告诉 IDE test() 返回什么,因此它也将调用链的其余部分标记为充满了缺失的方法。更糟糕的是,“降级严重性”设置不适用于这些警告,因为 IDE 不知道这些中间对象应该是什么类。

是否有解决方案也可以涵盖这种情况?

更新

尽管使用 @method 注释记录魔术方法似乎可行,但我不得不假设这种方法目前存在几个问题,因为我只花了一点时间就发现了这些相关的问题错误:

我确实希望他们能在合理的时间范围内解决这些问题。

最佳答案

好吧,您可以转到首选项菜单,在检查下,转到未定义->未定义方法并检查如果存在__magic 方法则降低严重性.

这将使标志不那么严重(而不是警告,而是信息),这仍然会给您的文件检查开绿灯。

除了在目标类上为每个可能使用的方法使用 @property@method PHPDoc 符号外,我没有注意到其他任何东西。

enter image description here

关于php - 如何处理神奇实现方法的 "method not found in class"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com