Symfony 使用变量名调用setter方法
我想问的是一些奇怪的问题。我正在使用Symfony2和Doctrine2。要绕过FOSRestBundle和JMSBundle(不喜欢复合主键)之间的问题,我需要知道是否可能——以及如何——从字段名称调用setter 这里有一个例子:假设我的产品实体有一个由3个字段组成的主键。 诀窍是将这种JSON数组发送到我的API REST中:Symfony 使用变量名调用setter方法,symfony,doctrine-orm,fosrestbundle,jmsserializerbundle,Symfony,Doctrine Orm,Fosrestbundle,Jmsserializerbundle,我想问的是一些奇怪的问题。我正在使用Symfony2和Doctrine2。要绕过FOSRestBundle和JMSBundle(不喜欢复合主键)之间的问题,我需要知道是否可能——以及如何——从字段名称调用setter 这里有一个例子:假设我的产品实体有一个由3个字段组成的主键。 诀窍是将这种JSON数组发送到我的API REST中: { "id": { "field1": "xxx", "field2": "...", "field3": "..." }, /
{
"id": {
"field1": "xxx",
"field2": "...",
"field3": "..."
},
// other fields
}
然后我使用json_decode()来提取ID字段。我用3个主键创建了一个$key=>$value的表。这是我的问题,对于这个表,我希望在foreach循环中执行类似$myEntity->set$KEY($VALUE)的操作
我这样做是因为我想在我所有的实体中重用这些代码。
我知道这是一件非常奇怪的事情,总而言之,我要调用的对象字段/属性的名称是适当的setter()
谢谢;-)
PS:抱歉,如果我的英语不完美,这不是我的出生语言。您可以在PHP中使用动态方法名称:
$myEntity->{'set'.$KEY}($VALUE);
或更可读的版本:
$method = 'set'.$KEY;
$myEntity->$method($VALUE);
别忘了检查方法是否存在:
$method = 'set'.$KEY;
if (!method_exists($myEntity, $method))
throw new \Exception('Something bad');
$myEntity->$method($VALUE);
你是我的英雄,干得好!多亏了你,话题结束了。