我已经定义了一个抽象类和一个应该返回模板文件名的方法.用户对此抽象类进行子类化,并实现该方法以返回模板文件名.但问题是,如果用户没有返回任何内容,则不会发出警告或其他任何事情.
我怎么能确定这一点?调用此方法的代码属于框架,因此我可以使用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的实例,因此将抛出异常.
原文地址:https://www.jb51.cc/php/138242.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。