【问题标题】:Codeigniter models are just utility classes?Codeigniter 模型只是实用程序类?
【发布时间】:2011-05-26 16:07:04
【问题描述】:

在我习惯的 MVC 中,模型类(通常)表示表,这些类的对象是行/域对象。我在 CodeIgniter 中不明白为什么模型类看起来只是单例实用程序类。感觉写错了

$data = array('text' => 'hello');
$this->commentModel->insert($data);

而不是

$comment = new Comment();
$comment->text = 'hello';
$comment->save();

有人能解释一下为什么 CodeIgniter 会这样建模并让我感觉更好吗? (或者告诉我我能做些什么来解决它。)

【问题讨论】:

  • 我不知道他们为什么会这样设计,但是你可以通过使用 Datamapper ORM (datamapper.exitecms.org) 来实现你想要的,它是专门为 Codeigniter 构建的最受欢迎的 ORM。
  • @bobo 嘿,如果你想回答我会接受的。其他答案很有帮助,但我最终选择了 Datamapper。谢谢。

标签: php model-view-controller codeigniter model


【解决方案1】:

CodeIgniter 不包含 ORM。

我建议在 Doctrine 中查看可以轻松与 CI 集成的内容: http://codeigniter.com/wiki/Using_Doctrine_with_Code_Igniter/

【讨论】:

    【解决方案2】:

    您可以查看我关于如何将 Doctrine (ORM) 与 Codeigniter 一起使用的文章。

    第 1 部分(共 11 部分): http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup

    【讨论】:

      【解决方案3】:

      CodeIgniter 中的模型是使用单例模式设计的,你是对的。虽然这对于习惯于使用更多 PHP OOP 方法的许多人来说似乎很困惑,但有几个原因。

      第一个最简单的就是你可以 只加载一次模型并拥有它 可在超全局中使用 整个系统。

      这是这里唯一真正的优点,其余的都是抱歉的解释。

      CI 于 2006 年使用 PHP 4 构建 支持作为主要优先事项。

      现在 EllisLab 已经从 CI 2.0 中删除了对 PHP 4 的支持,这才刚刚开始改变,但就目前而言,这就是框架的工作方式。

      您当然可以加载模型,然后为模型使用您喜欢的任何 PHP 5 语法。

      $this->load->model('comment');

      $comment = new Comment(); $comment->text = '你好'; $comment->保存();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 2023-02-03
        • 1970-01-01
        相关资源
        最近更新 更多