【发布时间】:2020-04-09 14:54:19
【问题描述】:
我有两个具有多个字段的 stdClass 对象。我无法更改对象布局或结构。
例如,他们都有一个电话号码:
对象 A
[phone] => Array
(
[0] => stdClass Object
(
[value] => '+1 123 456 7890'
[primary] => 1
)
)
对象 B
[phone] => '+1 123 456 7890'
我想通过数据库条目动态访问它们。换句话说,要访问对象 B 中的“电话”,只需:
$objB->phone
在数据库中,我会将字段存储为“电话”,将此值分配给变量,例如$field 和代码是:
$objB->{"$field"}
但是,如果我想映射对象 A,就会出现问题。要访问电话值,我需要:
$objA->phone[0]->value
但是由于我有很多字段和很多映射,我如何动态设置对这些字段的访问权限?
假设我有一个类似的数据库条目:
phone.0.value
这可以很容易地翻译成:
$objA->{"$field1"}[$key]->$field2
但是在动态或嵌套情况下会发生什么,例如,另一个字段是:
email.company.0.value.0
我不知道动态访问此值的方法。换句话说,我如何才能为给定的数据库条目动态构建访问权限?
$objA->{"$field1"}->{"$field2"}[$key1]->$field3[$key2]
【问题讨论】:
-
我曾经在堆栈溢出时问过这个问题。答案几乎没有。基本上你可以让你的应用程序要么是对象驱动的,要么是表驱动的,但不能两者兼而有之(至少不干净)。如果您不排序/过滤/加入,您可以使用对象样式数据库。如果你想使用排序/过滤/加入,你应该使用关联数组而不是对象。这是我能得到的最佳答案。
-
有趣。您是否有任何问题的链接?谢谢!
-
我在发布该评论后查看但找不到。我会再刺一次。它可能已作为重复或其他内容被删除。
-
仍然找不到问题但发现了这个有趣的位:stackoverflow.com/questions/17421306/…
-
我编辑了我的答案。请检查一下。
标签: php