bob*_*obo 3 php overriding function return-type
这不好吗?或者这在PHP框架中很常见?
例如,在父类中,有一个save()函数,它返回数据库中受影响的行数.然后在子类中,我重写此函数以进行一些预验证,并且还想简单地返回成功/失败的布尔值.
我同意一致认为改变返回值的类型(甚至含义)是不好的.
这是一个例子,它将如何变坏:
假设您有一个接受字符串和'Writer'的函数:
function printThroughWriter(String $text, Writer $writer) {
$count = $writer->write($text);
print "Writer '".get_class($writer)."' printed $count characters.";
}
Run Code Online (Sandbox Code Playgroud)
这是最初的'作家'课程:
class Writer {
public function write(String $text) {
print $text;
return strlen($text);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们将'LazyWriter'传递给函数,该怎么办:
class LazyWriter extends Writer {
public function write(String $text) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
假设返回值Writer::write()
是字符数printThroughWriter
已被破坏,从而导致不一致.