PHP dynamique de chargement de classe

Permet de dire que j'ai un tableau que je veux convertir un objet de valeur.

Mon objet de valeur classe est comme suit:

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

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

Et je créer un tableau d'objets de valeur comme suit:

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

OK, ça fonctionne très bien. Cependant, j'aimerais specificy la VO qui est d'être créé dynamiquement, afin que je puisse avoir une seule fonction dynamique pour créer mon VO.

Quelque chose comme:

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

Je me rends compte que je pouvais le faire avec une instruction switch (itérer sur toutes mes VO)...mais il n'y a aucun doute un beaucoup beaucoup plus élégant. Il serait également supercool si je pouvais lazy load la VO est en tant que de besoin, au lieu d'avoir plusieurs 'comprend'

Toute aide appréciée.

OriginalL'auteur JonoB | 2010-09-10