[英]Why this php interface code is work?
<?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错误:在interfaceA中未找到方法'getB',但效果很好。
此代码输出:1122
在这种情况下它将起作用,因为您要传入确实具有getB方法的对象。 但是,由于未在接口上定义getB,因此不能保证它能正常工作。
您的输入要求仅保证getA方法。 您将输入定义为InterfaceA,而不是classA。 因此,PhpStorm告诉您输入要求与您的用法不匹配,并且当您传递实现InterfaceA的某些其他类型的实例时,此用法可能会导致运行时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.