首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单例模型原理

单例模型原理
EN

Stack Overflow用户
提问于 2010-07-03 06:05:17
回答 3查看 1.3K关注 0票数 3

我们可以有一个Doctrine中的单例模型类吗?

对于单例类,我应该有一个私有/受保护的constructor....but,这是不可能的,因为我正在扩展一个有公共构造函数的Doctrine类

在与DB交互时,您可能会为使用Singleton模式而争论不休,但只需考虑以下场景:

我有一个用户操作记录器,记录到数据库中。此记录器在构造函数中执行一些初始化(从会话中获取当前用户信息),这对于特定执行的记录器的所有实例都是通用的。

在使用Doctrine时,似乎没有办法实现模型的单例模式?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-03 06:13:39

Doctrine model类的一个实例对应于一个实体,例如,User的一个实例代表一个用户,我怀疑您只有一个用户。将你的其他代码放在一个单独的类中,比如UserManager或其他什么。

代码语言:javascript
复制
class Logger { // plain old singleton class

    function log(x) {
        entry = new LogEntry(x); // LogEntry extends Doctrine_Model
        entry.save();
    }

}
票数 7
EN

Stack Overflow用户

发布于 2010-07-03 06:12:35

您可以重写公共构造函数,使其使用单例工厂方法,该方法将在实例尚不存在时创建一个实例,或者检索现有实例,然后将该实例返回给构造函数的调用方。

票数 1
EN

Stack Overflow用户

发布于 2010-07-03 09:11:31

你的问题不在于Doctrine,而在于PHP是无状态的(是的,有一些类似状态的方法来存储对象)。因此,无论如何你都不能一次拥有一个以上的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3169379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档