Загрузка динамического класса 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;

Хорошо, все работает нормально. Однако я хотел бы указать ВО, которая должна создаваться динамически, чтобы у меня была одна динамическая функция для создания моих ВО.

Что-то вроде:

$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;
}

Я понимаю, что могу сделать это с помощью переключателя заявление (повторяя все мои голосовые запросы) ... но нет сомнений в гораздо более элегантном решении. Также было бы здорово, если бы я мог лениво загружать ВО по мере необходимости, вместо того, чтобы иметь несколько «включаемых»

Любая помощь приветствуется.

11
задан JonoB 10 September 2010 в 15:24
поделиться