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:实体去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章
使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款