PHP динамическая загрузка классов
Допустим, у меня есть массив, который я хочу преобразовать в объект значения.
Мой класс объекта значения выглядит следующим образом:
/* 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) ... но, несомненно, гораздо более элегантное решение. Также было бы суперохладно, если бы я мог лениво загружать VO по мере необходимости, вместо того, чтобы иметь несколько включений
Любая помощь высоко ценится.