在
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的实例,因此将抛出异常.