Как я могу использовать объекты в цикле foreach и заменять переменные (ООП)? - PullRequest
0 голосов
/ 19 ноября 2018

Этот код ...

 foreach ($classes->fieldMappings as $fieldMapping) {
        echo $fieldMapping['fieldName'];
 }

... дает мне следующий вывод:

id
username
password
email
isActive

Что я хочу сделать сейчас, я хочу поставить этот код...

$entity->setUsername($data['form[username]']);
$entity->setEmail($data['form[email]']);
$entity->setPassword($data['form[password]']);
$entity->setIsActive($data['form[isActive]']);

... в цикл.Поэтому я заменил это следующим образом:

foreach ($classes->fieldMappings as $fieldMapping) { 
   $entity->set'.$fieldMapping['fieldName'].'($data['form['.$fieldMapping['fieldName'].']']);
}

Я получаю ошибку разбора, но на самом деле я не знаю, как написать это правильно.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Попробуйте заключить имя вашего метода в фигурные скобки, сделав его так:

 $entity->{'set'.$fieldMapping['fieldName']}(...)
0 голосов
/ 19 ноября 2018

Вы можете сделать это в одной строке, см. Сложный (фигурный) синтаксис в PHP: строки :

$entity->{'set'.$fieldMapping['fieldName']}($data['form['.$fieldMapping['fieldName'].']']);

Однако это может быть более читабельнымкак:

$func = 'set'.$fieldMapping['fieldName'];
$args = $data['form['.$fieldMapping['fieldName'].']'];
$entity->$func($args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...