簡體   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