PHP:Serialize vs Singleton vs Dependency Injection vs other else?

时间:2012-04-23 06:41:30

标签: php serialization dependency-injection singleton

我的代码中的对象在我需要时总是想要访问。 数据库对象,用于保存与数据库的连接。这是一个静态对象,连接不会改变。 我有一个用户对象,它包含用户级别,用户名和ID。

我读了一些关于如何做到这一点的帖子和文章。我找到了3种解决方案 - 使用单身人士 - 序列化对象并将其存储在会话中 - 使用依赖注入。

Singleton很糟糕,因为全局变量很糟糕。 序列化一个对象并将其存储在会话中对我来说似乎很难看(不知道为什么) 使用依赖注入会使构造函数拥挤参数。

现在我有两个问题 - 还有另一种我没有提到的方式吗? - 授予对上述对象的总体访问权限的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

你搞乱了一切。

  

授予对上述对象的总体访问权限的最佳方法是什么?

不,根本没有这样的方法

它们是不同的物体,需要不同的处理。

对于您拥有的数据库对象,但很少有选择 您可以使用每个请求创建它并在整个处理过程中使用它(当然,您需要将其全局化以便在其他类中使用)。
或者将它用作静态单例对象,每次需要与数据库交互时都会调用它。它将在第一次调用时建立数据库连接,并最终使用它直到处理请求结束。有了另一个请求,它将重新开始。

对于用户对象,会话中的透明序列化和依赖注入都很好 但是,在每个请求上创建用户对象并不是一个坏主意。在你的位置,我不会以这种方式折磨会议。

答案 1 :(得分:-1)

很抱歉有一个很难的现实,但是你使用了软件开发中的专门词汇,但是你没有专有技术...... DI可以使用构造函数或者也许是setter方法......你也可以使用DI容器丘疹,synfony或flow3 ......或者自己写。

我们在内部框架上工作,我们禁止单身,直接会话访问。还好 - >也许你必须了解建筑。

有一些好书可供使用。