-2

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

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

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

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

4

2 回答 2

1

你把一切都搞砸了。

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

不,根本没有这种方法

它们是不同的对象,需要不同的处理。

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

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

于 2012-04-23T06:49:39.413 回答
-1

抱歉,现实很艰难,但您使用了软件开发中的专业词汇,但您没有专有技术……DI 可以使用构造函数或 setter 方法……您也可以使用像 pimple、synfony 这样的 DI 容器或 flow3 ... 或自己写一个。

我们在一个不允许单例的内部框架上工作,直接会话访问是。也很好 -> 可能你必须学习建筑。

有一些好书可供选择。

于 2012-05-24T21:18:35.120 回答