Disons que j'ai un tableau que je veux convertir en objet de valeur.PHP dynamic class loading
Ma valeur classe d'objets est la suivante:
/* file UserVO.php*/
class UserVO
{
public $id;
public $email;
public function __construct($data)
{
$this->id = (int)$data['id'];
$this->email = $data['email'];
}
}
Je crée mon 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, donc tout cela fonctionne très bien. Cependant, je voudrais spécifier la VO qui doit être créée dynamiquement, de sorte que je puisse avoir une seule fonction dynamique pour créer mes 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 tout mon VO de) ... mais il ne fait aucun doute une solution beaucoup plus élégante. Ce serait aussi super cool si je pouvais paresser charger les VO au besoin, au lieu d'avoir plusieurs 'inclus'
Toute aide très appréciée.
votre chargeur automatique utilise encore include ou require it ne charge pas tout en permanence seulement quand ils sont nécessaires donc votre argument n'est pas le plus valide. comme l'utilisation de l'autochargeur est plus de charge. –