我遇到了一个复杂的情况...
我能够通过$type->created_by->email
获得值
- $type是包含数据的类(实体)。
- created_by是一个关系,所以这也是一个类(实体)。
- 电子邮件是 created_by; 字符串的属性。
当我给我的方法字符串"title"($type
的属性)时,我的代码将执行$type->$variable
(其中$variable title
)。
这就是我想要的:我想通过created_by
类访问email
属性。我已经试过created_by->email
.
像created_by.email
这样的字符串输入会很好......
如何动态获取类的属性?
谢谢!
在
实体级别也没有这样的功能(已经有人尝试实现它[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')
例如,您可以在所有其他实体扩展的基实体类中的自定义方法中实现这一点。