【发布时间】:2015-08-19 20:59:53
【问题描述】:
我有一个这样的抽象类
abstract class AbstractClass
{
/**
* @return AbstractClass
*/
public static function forge($data)
{
return new static($data);
}
}
以及另一个继承它的类
class OtherClass extends AbstractClass
{
public function my_method()
{
echo 'hello';
}
}
当我打电话时
$otherClass = OtherClass::forge($otherclass_data);
PhpStorm 不会自动补全my_method(),实际上会弹出一个错误:
Method 'my_method' not found in class 'AbstractClass'
有什么方法可以让 PhpStorm 知道我伪造了 OtherClass,而不是 AbstractClass?
【问题讨论】:
-
.. 但是您的
forge方法无论如何都不会返回任何内容...另外,在静态方法中使用$this... -
你是对的,写了一个简单的例子,我已经编辑了它以使我的问题更清楚
-
不确定你在哪里得到这个错误?我运行了您的示例,它给出的警告与类抽象无关。它不会自动完成
OtherClass::my_method,因为 my_method 不是静态的,不应该被静态引用。如果你实例化一个OtherClass,例如$otherClass = new OtherClass();并输入$otherClass->,它将给出forge和mo_method的自动完成建议。您能否提供一个实际导致该错误的示例?
标签: php phpstorm jetbrains-ide