繁体   English   中英

E_STRICT中的重载蛋糕方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM