为什么这个 php 接口代码是有效的?

  • 本文关键字:代码 有效 接口 php php
  • 更新时间 :
  • 英文 :

<?php
interface interfaceA{
    public function getA();
}
class classA implements interfaceA {
    public function getA()
    {
        echo 11;
    }
    public function getB(){
        echo 22;
    }
}
$classA = new classA();
functionA($classA);
function functionA(interfaceA $data){
    $data->getA();
    $data->getB();
}

Phpstorm 错误:在接口 A 中找不到方法 'getB' 但这是非常好的工作。

此代码输出:1122

在这种情况下它将起作用,因为您正在传入一个具有 getB 方法的对象。 但是,它不能保证有效,因为您没有在接口上定义 getB。

您的输入要求仅保证 getA 方法。 您将输入定义为接口 A,而不是类 A。因此,PhpStorm 告诉您,您的输入要求与您的用法不匹配,并且当您传递实现 InterfaceA 的其他类型的实例时,这种用法可能会导致运行时错误。

相关内容

最新更新