【发布时间】:2018-08-15 12:21:26
【问题描述】:
我目前在 CodeIgniter 中工作,我正在努力了解如何在我的编程中正确使用 Anemic 或 Rich Entity Classes。
我希望创建一个具有 getter/setter 的贫血实体,但我想知道这一切是如何工作的。
例如:
我可以在第一次创建对象实例时使用该对象来设置和获取信息,但是当从我的数据库中检索信息时,如何将信息返回到对象中以便我可以使用这些对象方法?
我听说过使用 Doctrine 将对象映射到关系数据库,但我已经创建了我想要使用的数据库架构,但我不确定如何让 Doctrine 映射到现有数据库。
我曾想过尝试:
- 使用
__construct函数设置所有对象属性 使用我从 SQL 查询中得到的数组,这似乎不合适。 - 创建对象实例并设置所有对象 我从 SQL 查询中获得的数组值的属性,这看起来很乏味。
- 在对象中创建一个方法,该方法采用我从中获取的数组 SQL 查询并将所有值分配给正确的对象 属性,看起来还可以。
但我的问题是: 这样做有普遍接受的做法吗?(Doctrine 除外)
【问题讨论】:
-
1) 您可以获取学说来映射现有模式,只需将其定义为与注释相同。 2)如果您要使用自制解决方案,最好有命名约定(php - $myField,db - my_field) - 然后您可以调用由变量定义的函数(循环遍历结果中的所有字段,每个字段调用
$fn = 'set'.$fieldName; $obj->$fn($fieldValue);等)3)使用反射 -
您的三个选项都是可能的并且是明智的。
-
codeigniter 使用活动记录 orm 我记得允许使用对象
-
@bxN5 是否只使用 custom_result_object() 函数并指定要将对象返回到哪个类?
标签: php codeigniter oop