关于验证/清理类中重写方法的参数,您能说些什么?
如果我有类似
的话class parentClass
{
public function originalMethod($id) {
if(is_numeric($id) && (int) $id > 0) {
// use $id
}
}
}
和一个覆盖方法的子类
class childClass extends parentClass
{
public function originalMethod($id) {
parent::originalMethod($id);
// do other stuff
}
}
我的问题是:
在哪种情况下您会继续验证方法的参数?
我不应该期望/假设在父方法中已经执行了正确的验证吗?
我已经看过一些代码,其中再次执行验证(不是像上面那样简单的情况)。
您每次都会验证吗?决不?只是在某些情况下?
答案 0 :(得分:1)
在上面的情况中,必须重新验证,因为如果输入无效,父级不会中止代码的执行。它只是封装了自己的代码。
在您可以控制父功能的其他情况下,您可以确定,它确实会从无效输入中保存您的覆盖功能,您可以跳过测试。
一般来说,我会重新评估,只是为了保存。如果这在以后成为性能问题,您可以逐个重新考虑这种方法。
答案 1 :(得分:1)
我通常用作一般指导原则:
当然这只是一个指导方针;可能会发生异常。