PHP dockblock 是否有某种用于接口的@mixin?

Does PHP dockblock has some kind of @mixin for interfaces?

我的 Visual Studio 代码显示“未定义的方法”。我想知道是否可以通过某些 VSC 设置“修复”它,或者可能有 PHP 解决方案。我有这个

class A
{
    public function someMethodA()
    {
        // ...
    }
}

class B extends A implements Bint
{
    public function someMethodB()
    {
        // ...
    }
}

interface BInt
{
    public function someMethodB();
}

class C
{
    public function someMethodC(Bint $b)
    {
        // VSC shows indefined method
        return $b->someMethodA();
    }
}

我的界面没有someMethodA,是否可以从Class A“继承”它以消除“错误”?这个class来自一个包,它没有接口,我需要扩展它

getStatusCode()存在,就是public,一切正常,但是Visual Studio代码无法理解

关注你的代码示例,而不是你的屏幕截图,你的 IDE 是正确的,你应该听听它告诉你什么。

方法someMethodC的约定是它可以接受接口Bint任何实现。 保证你可以调用someMethodB,但不保证其他任何东西

如果方法传递了一个classA的实例,那么PHP将允许你调用someMethodA,但是它可能会传递一些其他对象,例如:

class OnlyB implements Bint {
    public function someMethodB() {
        // ..
    }
}

someMethodC的contract(signature)说可以传这个对象,但是调用的时候someMethodA会报错

如果您希望该方法始终接收class A 的实例,请在签名中这样说:

public function someMethodC(A $b) {
    return $b->someMethodA();
}

如果您希望它接受 Bint 的实现,那么您应该只调用该接口保证存在的方法。