【问题标题】:CodeIgniter - multiple instances of a modelCodeIgniter - 模型的多个实例
【发布时间】:2009-03-09 17:15:32
【问题描述】:

我使用 CodeIginter 作为我的 PHP 框架。我正在解释以下情况:-

我需要三个模型,命名为:-

  • User_Model
  • Relation_Model
  • Reminder_Model

现在考虑一下情况:

User_Model 已经写入。我正在写Relation_Model。我的朋友会写Reminder_Model

Relation_Model 实例化User_Model,并在其方法之一中使用它:getRelation($userID)

Reminder_Model 还实例化一个 User_Model 实例以使其正常运行。

Reminder_Model需要调用Relation_Model的getRelation方法。

因此,至少应该有两个 User_Model 实例。一个在Relation_Model,另一个在Reminder_Model

问题是我如何确保内部 Relation_Model,我的User_Model 实例不会干扰我朋友的Reminder_Model 类的User_Model 实例?

也就是说,要编码Reminder_Model,我朋友应该没有Relation_Model的内部知识,只是使用它的一种方法getRelation

如果您想知道对此的需求,例如:Reminder_Model 加载已登录用户(例如用户 A)的模型,Relation_Model 与用户 A 团队成员的用户模型一起使用。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    我不确定我是否理解为什么你不能使用 User_Model 类的同一个实例,但可能会加载模型两次,一次使用普通的旧 $this->load->model('User_Model' ) 和第二个 $this->load->model('Use_Model', 'Second_User_Model') 会有所帮助。或者你可以 clone$this->second_user_model = clone $this->user_model 这样的对象。

    【讨论】:

    • 第一种方法,将要求 Reminder_Model 的实现者具有 Relation_Model 的内部知识(事实上,在 Relation_Model 内部,我已经用 Second_User_Model 的名称实例化了 User_Model!)。是的,我也终于想到了克隆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2011-11-23
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多