2010-06-21 48 views
1

我正在寻找关于如何解决设计问题的建议。我目前使用Symfony框架,所以我将使用Symfony类的名称。Symfony用户框架设计问题

当用户将成为“认证”或Symfony的用户类的“资格证书”的变化,一个重生的()被调用当前使用的存储类。商店类扩展了sfStorage。

现在,当这种再生()命令是跑,我们需要做一些业务逻辑。下面是选项我想出迄今:

  • 修改三个函数addCredential,removeCredential,setAuthenticated并告诉他们在分发事件(setAuthenticated已经这样做了),所以我们知道该怎么做我们的业务逻辑。

  • 第二个选项是延长sfSessionStorage类,并告诉它在每个再生抛出一个事件。我遇到的问题是sfUser要求接口sfStorage。除非我们修改sfStorage,否则如果有人通过扩展sfStorage的任何类来扩展sfStorage而不知道添加事件,它将无法工作。

  • 第三个选择将是第二选择,但我们仍然会扩展用户对象说,我们需要发出一个通知上重新生成自定义sfStorage抽象类的接口。然后我们会确定任何通过的类都会遵循这种通知方法。

任何人有任何建议吗?

回答

0

我会选择第二个选项并延长sfSessionStorage类,然后使用该类将其插入到factories.yml中。

这不会造成与sfUser任何问题,但作为您的自定义存储类将通过代理从sfStorage延伸。