【发布时间】:2012-02-14 16:25:50
【问题描述】:
我有一个带有关系的模型,我想实例化一个关系类型的新对象。
示例:一个人有一家公司,我有一个人-对象:现在我 想要创建一个公司对象。
companyobject 的类是在关系中定义的,所以我认为我不需要“知道”那个类,但我应该能够要求 person-object 为我提供一个新的类型实例公司?但我不知道怎么做。
这是 - 我认为 - 与 New model object through an association 相同的问题,但我使用的是 PHPActiveRecord,而不是 ruby 问题。
这背后的原因:我有一个抽象超类
person,两个孩子与一种公司对象有自己的关系。我需要能够在抽象人中实例化正确的类。
一种解决方法是直接从static $has_one 数组中获取它:
$class = $this::$has_one[1]['class_name'];
$company = new $class;
当然可以通过在数组中搜索关联名称来消除硬编码的数字,但这仍然很丑。
如果有人知道这是如何在 Ruby 中实现的,以及 phpactiverecord 实现有何不同,我可能会从那里得到一些想法?
一些测试表明,虽然“在数组中搜索我的类名”看起来有点奇怪,但它对性能没有任何影响,并且在使用中它足够实用。
【问题讨论】:
-
@charles: phpactiverecord 是一个特定的库,所以这个标签实际上是有用的。如果您认为这太过分了,请删除 activerecordtag 而不是描述我使用什么库的标签
-
不确定这是否有帮助,但我正在阅读有关反射类的信息。 php.net/manual/en/book.reflection.php。它根据各种可能性检查类和方法。这可能会对您有所帮助。
-
遗憾的是,我认为它不会有帮助:在撰写本文时,该对象尚未生成,这是 lib 为您所做的,仍然感谢 :)
标签: php phpactiverecord