Symfony 使用 eval 执行实体方法
Symfony execute an entity method using eval
我正在尝试 运行 使用基于字符串的方法的实体方法。但这似乎不起作用并出现以下错误:
Notice: Undefined property: AppBundle\Entity\User::$setName
在控制器中
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$value = "Peter";
$method = "setName(".$value.")";
eval($user->$method);
/**Tried this also but same error **/
$user->{$method}
我怎样才能使这个工作?
首先,您必须将 $method
变量更改为一个简单的 function/method 名称,然后您可以像上一行一样对其求值
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$value = "Peter";
// Just the method name
$method = "setName";
// This is a valid evaluation passing a variable
$user->{$method}($value);
Jack Skeletron 的答案更接近您的尝试,但您也可以使用 call_user_func_array
函数来完成:
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$method = 'setName';
$value = 'Peter';
call_user_func_array(array($user, $method), array($value));
我正在尝试 运行 使用基于字符串的方法的实体方法。但这似乎不起作用并出现以下错误:
Notice: Undefined property: AppBundle\Entity\User::$setName
在控制器中
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$value = "Peter";
$method = "setName(".$value.")";
eval($user->$method);
/**Tried this also but same error **/
$user->{$method}
我怎样才能使这个工作?
首先,您必须将 $method
变量更改为一个简单的 function/method 名称,然后您可以像上一行一样对其求值
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$value = "Peter";
// Just the method name
$method = "setName";
// This is a valid evaluation passing a variable
$user->{$method}($value);
Jack Skeletron 的答案更接近您的尝试,但您也可以使用 call_user_func_array
函数来完成:
$user = $this->getDoctrine()->getRepository("AppBundle:User")->find(1);
$method = 'setName';
$value = 'Peter';
call_user_func_array(array($user, $method), array($value));