加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 我可以强制抽象类的方法返回一些东西吗?

发布时间:2020-12-13 13:40:14 所属栏目:PHP教程 来源:网络整理
导读:我已经定义了一个抽象类和一个应该返回模板文件名的方法.用户对此抽象类进行子类化,并实现该方法以返回模板文件名.但问题是,如果用户没有返回任何内容,则不会发出警告或其他任何事情. 我怎么能确定这一点?调用此方法的代码属于框架,因此我可以使用settype($
我已经定义了一个抽象类和一个应该返回模板文件名的方法.用户对此抽象类进行子类化,并实现该方法以返回模板文件名.但问题是,如果用户没有返回任何内容,则不会发出警告或其他任何事情.

我怎么能确定这一点?调用此方法的代码属于框架,因此我可以使用settype($returnVal,’string’)做一些奇特的东西,如果这有帮助的话?有更好的解决方案吗?

在 PHP中,你不能“强制”一个方法来返回任何东西 – 即使使用抽象类/方法,也不可能使用接口.

您可以做的最好的事情是表明实现应该返回一些内容,使用注释 – 但您不能强迫人们这样做:

/**
 * @param string $a blah blah
 * @return int The return value blah blah
 */
public function my_method($a);

当然,如果从框架中调用此方法(实现),则可以检查返回的内容,如果不符合预期,则抛出异常…

这是一个如何实现的简单示例:

class ClassA {
    /**
     * @param string $a blah blah
     * @return ClassB The return value blah blah
     */
    public function my_method($a) {
        echo 'blah';
    }
}

class ClassB {
    // ...
}


$a = new ClassA();
$returned = $a->my_method(10);
if (!$returned instanceof ClassB) {
    throw new Exception("Should have returned an instance of ClassB !");
}

这里,由于该方法不返回ClassB的实例,因此将抛出异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读