2010-06-21 27 views
1

我正在尋找關於如何解決設計問題的建議。我目前使用Symfony框架,所以我將使用Symfony類的名稱。Symfony用戶框架設計問題

當用戶將成爲「認證」或Symfony的用戶類的「資格證書」的變化,一個重生的()被調用當前使用的存儲類。商店類擴展了sfStorage。

現在,當這種再生()命令是跑,我們需要做一些業務邏輯。下面是選項我想出迄今:

  • 修改三個函數addCredential,removeCredential,setAuthenticated並告訴他們在分發事件(setAuthenticated已經這樣做了),所以我們知道該怎麼做我們的業務邏輯。

  • 第二個選項是延長sfSessionStorage類,並告訴它在每個再生拋出一個事件。我遇到的問題是sfUser要求接口sfStorage。除非我們修改sfStorage,否則如果有人通過擴展sfStorage的任何類來擴展sfStorage而不知道添加事件,它將無法工作。

  • 第三個選擇將是第二選擇,但我們仍然會擴展用戶對象說,我們需要發出一個通知上重新生成自定義sfStorage抽象類的接口。然後我們會確定任何通過的類都會遵循這種通知方法。

任何人有任何建議嗎?

回答

0

我會選擇第二個選項並延長sfSessionStorage類,然後使用該類將其插入到factories.yml中。

這不會造成與sfUser任何問題,但作爲您的自定義存儲類將通過代理從sfStorage延伸。