Учитывая PHP-класс MyClass:

class MyClass {
   private $a;
   private $b;

   function doSomething() {
      return $this->a + $this->b;
   }
}

Могу ли я создать экземпляр этого класса с массивом результатов, возвращаемым MongoDB, без присвоения каждого значения классу вручную? Массив имеет одинаковые ключи (a и b). В настоящее время я использую следующий трудоемкий подход:

$result = $mongo->findOne(array('key' => 'value'));
$myClass = new MyClass();
$myClass->a = $result['a'];
$myClass->b = $result['b'];
0
L. Männer 15 Апр 2020 в 18:27

1 ответ

Лучший ответ

Вы можете создавать динамические переменные:

$result = $mongo->findOne(array('key' => 'value'));
$myClass = new MyClass();
foreach($result as $k => $v) {
    $myClass->{$k} = $v;
}

Не знаю, хорошая ли это практика.

1
Felippe Duarte 15 Апр 2020 в 15:32