Symfony выполняет метод сущностей, используя eval - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь запустить метод Entity, используя метод на основе строк.Но, похоже, это не работает и выдает следующую ошибку:

Примечание: неопределенное свойство: 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}

Как я могу сделать эту работу?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ответ Джека Скелетрона ближе к тому, что вы пытались сделать, но вы также можете сделать это с помощью функции 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));

http://php.net/manual/en/function.call-user-func-array.php

0 голосов
/ 18 мая 2018

Прежде всего вы должны изменить переменную $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);
...