Давайте скажем, что у меня есть массив, который я хочу преобразовать в объект значения.
Мой класс объектов свойств выглядит следующим образом:
/* file UserVO.php*/
class UserVO
{
public $id;
public $email;
public function __construct($data)
{
$this->id = (int)$data['id'];
$this->email = $data['email'];
}
}
И я создаю свой массив объектов значений следующим образом:
/* file UserService.php*/
$array = array(
array(...),
array(...));
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
$result[] = new UserVO($array[$i]);
}
return $result;
ОК, так что все работает отлично. Тем не менее, я хотел бы указать VO, который должен быть создан динамически, так что у меня может быть одна динамическая функция для создания моих VO.
Что-то вроде:
$ret = create_vo($array, 'UserVO');
function create_vo($data, $vo)
{
$count = count($data);
for ($i = 0; $i < $count; $i++)
{
$result[] = new $vo($data[$i]); //this obviously wont work...Class name must be a valid object or a string
}
return $result;
}
Я понимаю, что могу сделать это с помощью оператора switch (итерации через все мои VO)... но, без сомнения, гораздо более элегантное решение. Это также было бы supercool, если бы я мог ленить загружать VO по мере необходимости, вместо того, чтобы иметь несколько "включает"
Любая помощь очень ценится.