codeigniter:实体去哪儿了?

Posted

技术标签:

【中文标题】codeigniter:实体去哪儿了?【英文标题】:codeigniter: where do entities go? 【发布时间】:2011-04-10 13:23:58 【问题描述】:

我想知道我应该如何处理我的实体?例如,一个名为 Articles 的类,具有一些数据成员(名称/标题/日期)和 getter 和 setter。我可以将这些添加到我的文章数据成员中,但最好将它们分开。那你怎么看?

谢谢!

【问题讨论】:

您所说的“我可以将这些添加到我的文章数据成员中,但最好将它们分开”是什么意思?我想你应该从模型类(codeigniter.com/user_guide/general/models.html)扩展你的文章类并继续。 我的意思是向模型中添加数据成员,就像在示例中一样,但是分离实体不是更好吗? 你能解释一下你所说的“实体”是什么意思吗? 具有数据成员和 getter 和 setter 的类(仅限) 听起来你在谈论 CodeIgniter 在模型-视图-控制器范式中认为什么是“模型” 【参考方案1】:

我喜欢@ilbesculpi 的解决方案,但我使用命名空间而不是使用常量和require_once 对其进行了一些定制。这是我的版本:

1) 在 /system/application/entities 中创建我的实体类。

namespace MyApplication\Entities;

class ArticlesEntity

    function doSomeStuff()
    
        // Your code here...
    

2) 通过using 语句将我的实体类包含在我的模型中。

use MyApplication\Entities\ArticlesEntity;

class ArticlesModel extends CI_Model

    function test() 
    
      $entity = new ArticlesEntity();
      $ArticlesEntity->doSomeStuff();
    

【讨论】:

在我看来,这是更优雅的解决方案。但是,我认为它需要一些像 PSR-4 这样的自动加载机制。 CodeIgniter4 将支持使用实体:codeigniter4.github.io/CodeIgniter4/models/entities.html【参考方案2】:

我通常这样做:

1.- 在 /system/application/classes 中创建我的实体类

class MyEntity 

2.- 在 /system/application/config/constants.php 上定义一个指向该文件夹的常量

define('CLASSES_DIR', APPPATH . "classes/");

3.- 包括模型中的实体类:

require_once(CLASSES_DIR  . "MyEntity.php");

class MyModel extends Model 

   function test() 
      $entity = new MyEntity();
      $entity->doSomeStuff();
   


这不会破坏您的 mvc 结构,并保持实体类分开。希望对您有所帮助!

【讨论】:

这似乎是最好的解决方案。我最近在codeigniter.com/forums/viewthread/166650 提出了这个问题,但没有得到任何可靠的答复。【参考方案3】:

CodeIgniter 模型使用单例模式。如果你愿意,你可以创建库或使用 $foo = new Some_Model,记住这只是 PHP :)

【讨论】:

如果你想要一个产品列表,它就不能很好地工作。您所做的只是创建一个函数集合。 对,CodeIgniter 模型通常是愚蠢的、瘦的、单例的。但是你可以使用普通的旧 PHP 做任何你喜欢的事情。

以上是关于codeigniter:实体去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章

MVC,课程去哪儿了?

nginx配置CI重写规则,codeigniter

CodeIgniter:将最后一个活动存储到数据库中

使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款

去哪儿网怎么沦为骗子的平台了,一步步揭开去哪儿网欺骗消费者的把戏

在 Doctrine 2 / CodeIgniter 2 中找不到实体模型