<?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 的其他类型的实例时,这种用法可能会导致运行时错误。