我對如何爲對象實現狀態有困難。 比方說,我們有這樣的:PHP:用對象實現狀態
class User {
private $_active;// 1 or 0
private $_deleted;// 1 or 0
...
}
這些屬性 - 在我看來 - 意味着用戶對象上的狀態。 我想要做的是定義一些像afterActivate()或afterDelete()這樣的事件,這樣我就可以鏈接我的例程。即激活後更新一些計數器,刪除後也更新一些計數器...
所以我現在考慮兩種方法 - 第一個是創建類Activable和Deletable(不介意命名),然後使用戶通過繼承層次繼承這些類。
class Activable {
protected afterActivate(){};
}
class Deletable {
protected afterDelete(){};
}
class Activable extends Deletable {}
class User extends Activable{}
有兩個問題,我用這種方法看到的 - 第一個是類活化現在已經隱含可刪除狀態,這是錯誤的,第二個問題是 - 如果我有更多的國家 - 5-6規定的繼承層次可能會變得相當複雜。 (因爲用戶將擴展模型類,這將擴展別的東西等等......)
第二種方法是在PHP中使用特徵並使用它們來實現這一點。 所以我會像
class User{
use Activable, Deletable;
}
哪種方法會更好 - 或許有些第三屆辦法? 我在這裏朝着正確的方向走嗎?
Thanx。
由於您的答案是唯一的一個,標記界面是一個可行的解決方案,我會接受它作爲正確的答案。 – Mathew