繁体   English   中英

为什么此php接口代码有效?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM