动态获取嵌套属性

时间:2014-12-29 23:48:05

标签: php cakephp cakephp-3.0

我遇到了一个复杂的情况......

我可以通过$type->created_by->email

获取值
  • $ type是一个包含数据的类(实体)。
  • created_by是一个版本,因此也是一个类(实体)。
  • email是created_by的一个属性;串。

在为我的方法提供字符串'title'($type的属性)时,我的代码将$type->$variable(其中$ variable为title)。

这就是我想要的:我希望通过email课程到达created_by属性。 我已经尝试了created_by->email

created_by.email这样的字符串输入会很好......

我如何动态获取类的属性?

谢谢!

1 个答案:

答案 0 :(得分:1)

实体级别也没有此类功能(已尝试实施此 [1] [2] ),这也不是PHP将支持开箱即用的东西。

通常,您必须遍历属性。您可以在表单助手的实体上下文中找到类似的内容,请参阅EntityContext::val()以获得一些灵感。

快速解决方案是使用Hash::get()

// in CakePHP versions before 3.1.0 you'd have to convert
// the entity to an array first using $entity->toArray()
Hash::get($entity, 'dot.notated.path')

例如,您可以在基本实体类中的自定义方法中实现此功能,而所有其他实体都可以扩展。