[英]Overriding cake methods in E_STRICT
覆盖方法的最佳实践是什么? 特别是如果我们需要添加另一个参数?
这不符合E_STRICT(将$ soft添加为第二个参数):
public function delete($id, $soft = false, $cascade = true) {
if ($soft) {
return $this->_softDelete();
}
return parent::delete($id, $cascade);
}
导致:
Declaration of Conversation::delete() should be compatible with that of Model::delete()
我知道,不应以这种方式覆盖方法( 将参数添加到覆盖方法e-strict-observation中 )。
但是如果必须这样做,将如何进行? (无需删除E_STRICT)基本思想是拦截正常的delete调用,而不必重写所有出现的该模型方法调用。
它要么是E_STRICT
兼容性,要么是修改函数签名。 不能两者兼有。
解决方案通常是使用合成而不是继承,也就是说,将要修改行为的对象包装在具有不同签名的新类中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.