Carregamento de classe dinâmica PHP

Digamos que eu tenho uma matriz que desejo converter em um objeto de valor.

Minha classe de objeto de valor é a seguinte:

/* file UserVO.php*/
 class UserVO
 {
    public $id;
    public $email;

     public function __construct($data)
     {
         $this->id = (int)$data['id'];
         $this->email = $data['email'];
     } 
 }

E eu crio minha matriz de objetos de valor da seguinte maneira:

/* file UserService.php*/
$array = array(
array(...),
array(...));
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
   $result[] = new UserVO($array[$i]);
}
return $result;

OK, então tudo isso funciona bem. No entanto, gostaria de especificar especificamente o VO que deve ser criado dinamicamente, para que eu possa ter uma única função dinâmica para criar meus VOs.

Algo como:

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

Percebo que eu poderia fazer isso com uma instrução switch (repetindo todos os meus VOs) ... mas não há dúvida de que uma solução muito mais elegante. Também seria super legal se eu pudesse carregar preguiçosamente os VOs conforme necessário, em vez de ter vários 'inclusos'

Qualquer ajuda muito apreciada.

questionAnswers(4)

yourAnswerToTheQuestion